-
bash 스크립트를 실행하는 다음 두 가지 방법이 동일한 지 궁금합니다.
. ./myScript.sh source myScript.sh
- 스크립트를 실행하는 대신 스크립트 내용을 실행하고 있습니까 (예 : 스크립트 실행을위한 서브 쉘을 작성하지 않습니까)?
답변
-
그들은 똑같은 일을한다는 점에서 bash와 동일합니다. 반면에
source
5 자 이상이며 POSIX 전용 쉘이나 Bourne으로 이식 할 수 없지만.
(점)은 사용하지 않습니다source
. -
맞습니다. 파일을 소싱하면 현재 쉘에서 명령이 실행되고 현재 쉘 환경에 영향을 미칩니다. 소스 파일에 인수를 전달할 수 있으며 bash는 실제로
$PATH
슬래시가 포함되어 있지 않으면 일반 명령처럼 파일 이름을 찾습니다 .
.
vs 의 원래 질문과 관련이 source
없지만 예제에서는
. ./myScript.sh
와 동일하지 않다
source myScript.sh
반면 때문에 .
와 source
기능적으로 동일하며, myScript.sh
과 ./myScript.sh
동일하지 않다. ./myScript.sh
슬래시가 포함되어 있기 때문에 경로로 해석되며 셸은을 사용합니다 ./myScript.sh
. 그러나 myScript.sh
슬래시가 없으므로 쉘이 먼저 $PATH
검색합니다. 에 대한 POSIX 지정 표준 동작입니다 .
. 확장명 (경로 검색 후 현재 작업 디렉토리에서 검색하는 등) 또는 .
/ 의 동작을 변경하는 옵션을 추가 할 수 있지만 대부분의 쉘은 기본적으로이 옵션을 사용합니다 source
.
답변
그렇습니다. 기능상의 차이는 없습니다. .
에 대한 내장 동의어입니다 source
.
(편집 : 분명히이 만 사실 bash
과 zsh
일부 가벼운 쉘은 없습니다. source
단지이 .
때문에 POSIX에 의해 지정 ksh
, dash
, ash
, 등이 없을 수 있습니다 source
참조하십시오. jw013의 답변 정보를.)