Eu quero usar o seguinte no fish
shell:
$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm
Isso funciona bem bash/zsh
, masnãona fish
casca.
Mas se eu executar o seguinte no fish
shell:
$env tmp=arm make
isso funciona bem.
Alguém por favor pode me ajudar com isso?
Responder1
Você está procurando set -x
:
set -x arm 'ARCH=arm CROSS_COMPILE=arm-eabi-'
Veja oseção do tutorial sobre variáveis de ambientepara mais.
Responder2
Em sh
/ bash
:
export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
make $arm
Realmente não faz sentido. Variáveis de ambiente são entendidas como variáveis passadas para make
(portanto, uma referência a $(arm) no Makefile, por exemplo, expande seu conteúdo). As variáveis de ambiente são escalares e podem conter apenas um valor de string. Acima você está contando com o operador split+globda cascaque divide a variável em palavras passadas para make
(como argumentos).
Mas $arm
é expandido pelo shell, então não precisa exportar arm
para o ambiente do make
pq make
não faz uso dessa $arm
variável.
Além disso, em um shell que os suporte, faria mais sentido usar arrays. Em bash
/ zsh
/ ksh
:
arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make "${arm[@]}"
Com fish
:
set arm ARCH=arm CROSS_COMPILE=arm-eabi-
make $arm
Com rc
/ es
/ zsh
:
arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make $arm