다음 스크립트 실행 방법의 차이점에 대해 문의드리고 싶습니다.
. script.sh
../script.sh
. ./script.sh
미리 감사드립니다.
답변1
script.sh
./script.sh
../script.sh
위의 모든 것에는 주어진 파일을 실행하도록 커널에 요청하는 쉘이 있으며, 이는 이름에 관계없이 쉘 스크립트일 필요는 없습니다. 첫 번째는 에서 파일을 찾고 PATH
, 두 번째는 .
현재 디렉터리( )에서 파일을 찾고, 세 번째는 상위 디렉터리에서 파일을 찾습니다.
. script.sh
. ./script.sh
. ../script.sh
source script.sh
source ./script.sh
source ../script.sh
둘 다 주어진 파일을 쉘 명령으로 열고 읽으려면 쉘 자체가 .
필요합니다 .source
현재 쉘, 마치 내부 명령이 쉘 명령줄에 주어진 것처럼 보입니다. 즉, 예를 들어 소스 스크립트에서 수행된 모든 변수 할당은 이후에 셸에서 표시되지만 일반 실행에서는 그렇지 않습니다. source
yes 의 비표준 동의어입니다 .
. 첫 번째는 다시 파일을 찾고 PATH
, 두 번째는 현재 디렉터리를 찾고, 세 번째는 상위 디렉터리를 찾습니다. 나머지 3개도 마찬가지다.
(Zsh를 제외하면 source
Bash와 달리 현재 디렉터리가 먼저 확인됩니다. .
Bash에서는 이 shopt
설정이 sourcepath
비활성화되어 있으면 검색 .
도 수행되지 않습니다 .)source
PATH
바라보다: