Я хочу использовать в fish
оболочке следующее:
$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm
Это отлично работает вbash/zsh
нонетна fish
ракушке.
fish
Но если я выполню в оболочке следующее :
$env tmp=arm make
это работает отлично.
Может ли кто-нибудь мне с этим помочь?
решение1
Вы ищете set -x
:
set -x arm 'ARCH=arm CROSS_COMPILE=arm-eabi-'
Смотритераздел руководства по переменным средыдля большего.
решение2
В sh
/ bash
:
export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
make $arm
Не имеет смысла. Переменные окружения подразумеваются как переменные, передаваемые вmake
(например, ссылка на $(arm) в Makefile расширяется до его содержимого). Переменные окружения являются скалярными, они могут содержать только одно строковое значение. Выше вы полагаетесь на оператор split+globоболочкикоторый разбивает переменную на слова, передаваемые make
(в качестве аргументов).
Но $arm
расширяется оболочкой, поэтому вам не нужно экспортировать arm
в среду, make
поскольку make
эта переменная не используется $arm
.
Кроме того, в оболочке, которая их поддерживает, было бы разумнее использовать массивы. В bash
/ zsh
/ ksh
:
arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make "${arm[@]}"
С fish
:
set arm ARCH=arm CROSS_COMPILE=arm-eabi-
make $arm
С rc
/ es
/ zsh
:
arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make $arm