다음 쉘 스크립트가 있습니다
TEST=/foopath
export TEST
test.sh
내가 실행하는 파일에 있습니다.chmod +x test.sh
실행할 때 실행하여 출력을 볼 ./test.sh
수 있으면 좋겠지 만 아무것도 표시되지 않습니다.echo $TEST
/foopath
$TEST
위 스크립트를 실행할 때 변수를 내보내려면 어떤 변경이 필요합니까 ./test.sh
? 이것이 bash와 zsh의 차이점입니까?
답변1
이것이 상위 쉘과 하위 쉘의 차이점입니다.
을 실행하면 test.sh
이를 실행하기 위한 새 셸이 시작되고 해당 셸 내에서 변수가 내보내집니다. 이는 새 쉘이 자신과 자체 하위 쉘에 대해 알고 있음을 의미합니다. 시작한 부모 쉘은 test.sh
전혀 영향을 받지 않습니다(영향을 받을 수 없습니다).
현재 셸에서 변수를 보려면 다음 스크립트를 가져와야 합니다.
. test.sh
.
(와 사이에 공백이 있습니다 test.sh
.) test.sh
새 쉘을 시작하지 않고 실행 됩니다 .