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