![zsh의 .sh 파일에서 환경 변수를 내보내는 방법은 무엇입니까? [복사]](https://linux55.com/image/99681/zsh%EC%9D%98%20.sh%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EB%82%B4%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음 쉘 스크립트가 있습니다
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
새 쉘을 시작하지 않고 실행 됩니다 .