쉘 스크립트는 터미널에서 실행되지만 쉘 스크립트 파일에서는 실행되지 않습니다.

쉘 스크립트는 터미널에서 실행되지만 쉘 스크립트 파일에서는 실행되지 않습니다.

중복 가능성:
"내보낸" 변수를 bash 스크립트에 유지하려면 어떻게 해야 합니까?

파일에서 스크립트를 실행하는 데 문제가 있습니다. 명령줄에 입력할 때

PATH=$PATH:/home/

그런 다음 PATH적절하게 변경합니다. 하지만 이 파일을 실행하면:

#!/bin/sh
#provided by me

PATH=$PATH:/home/
echo "done"
exit 0

done인쇄되었지만 PATH변경되지 않았습니다. 왜 이런 일이 발생합니까?

답변1

환경 변수 변경 사항은 현재 프로세스와 후속 하위 프로세스에 적용되지만 상위 프로세스에는 적용되지 않습니다. 따라서 스크립트를 실행해도 해당 스크립트가 실행되는 셸의 환경 변수에는 영향을 주지 않습니다. source내장된 쉘 스크립트를 사용해야 합니다 .. 즉

. /path/to/script

이로 인해 현재 셸은 하위 프로세스를 실행하는 대신 파일의 명령을 실행합니다.

관련 정보