fish
쉘 에서 다음을 사용하고 싶습니다 .
$ export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
$ make $arm
이것은 잘 작동 bash/zsh
하지만~ 아니다껍질 에 fish
.
fish
그러나 쉘 에서 다음을 실행하면 :
$env tmp=arm make
이것은 잘 작동합니다.
누군가 나를 도와줄 수 있나요?
답변1
답변2
안에 sh
/ bash
:
export arm='ARCH=arm CROSS_COMPILE=arm-eabi-'
make $arm
정말 말이 안 돼요. 환경 변수는 전달된 변수를 의미합니다 make
(예를 들어 Makefile의 $(arm)에 대한 참조는 해당 내용으로 확장됩니다). 환경 변수는 스칼라이므로 하나의 문자열 값만 포함할 수 있습니다. 위에서는 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