como definir e usar vários parâmetros em variável ambiental única em casca de peixe

3

Eu quero usar o seguinte em fish shell:

$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm 

Isso funciona bem em bash/zsh , mas não em fish shell.

Mas se eu executar o seguinte em fish shell:

$env tmp=arm make

isso funciona bem.

Alguém por favor pode me ajudar com isso?

    
por user3202436 17.06.2014 / 08:42

2 respostas

5

Você está procurando por set -x :

set -x arm 'ARCH=arm CROSS_COMPILE=arm-eabi-'

Consulte a seção de tutoriais sobre variáveis de ambiente para saber mais.

    
por 17.06.2014 / 09:36
2

Em sh / bash :

export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
make $arm

Realmente não faz sentido. Variáveis de ambiente são significadas como variáveis passadas para make (portanto, uma referência a $ (arm) no Makefile por exemplo se expande para seu conteúdo). Variáveis de ambiente são escalares, elas podem conter apenas um valor de cadeia. Acima, você está contando com o operador <+> split <> do shell que divide a variável em palavras passadas para make (como argumentos).

Mas $arm é expandido pelo shell, portanto, você não precisa exportar arm para o ambiente de make porque make não usa essa variável $arm .

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
    
por 17.06.2014 / 11:07

Tags