cómo configurar y utilizar múltiples parámetros en una sola variable ambiental en concha de pescado

cómo configurar y utilizar múltiples parámetros en una sola variable ambiental en concha de pescado

Quiero usar lo siguiente en fishShell:

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

Esto funciona bien bash/zshperonoen fishel caparazón.

Pero si ejecuto lo siguiente en fishshell:

$env tmp=arm make

esto funciona bien.

¿Alguien puede ayudarme con esto?

Respuesta1

Estas buscando set -x:

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

Ver elsección de tutorial sobre variables de entornopara más.

Respuesta2

En sh/ bash:

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

Realmente no tiene sentido. Las variables de entorno son variables pasadas amake (por lo que una referencia a $(arm) en el Makefile, por ejemplo, se expande a su contenido). Las variables de entorno son escalares y solo pueden contener un valor de cadena. Arriba estás confiando en el operador split+globde la conchaque divide la variable en palabras pasadas make(como argumentos).

Pero $armel shell lo expande, por lo que no es necesario exportarlo armal entorno porque makeno makeutiliza esa $armvariable.

Además, en un shell que los admita, tendría más sentido usar matrices. En bash/ zsh/ ksh:

arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make "${arm[@]}"

Con fish:

set arm ARCH=arm CROSS_COMPILE=arm-eabi-
make $arm

Con rc/ es/ zsh:

arm=(ARCH=arm CROSS_COMPILE=arm-eabi-)
make $arm

información relacionada