Quiero usar lo siguiente en fish
Shell:
$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm
Esto funciona bien bash/zsh
peronoen fish
el caparazón.
Pero si ejecuto lo siguiente en fish
shell:
$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 $arm
el shell lo expande, por lo que no es necesario exportarlo arm
al entorno porque make
no make
utiliza esa $arm
variable.
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