“로 스크립트 실행. ”및“source” ./myScript.sh source myScript.sh 스크립트를 실행하는 대신 스크립트 내용을

  1. bash 스크립트를 실행하는 다음 두 가지 방법이 동일한 지 궁금합니다.

    . ./myScript.sh
    
    source myScript.sh
  2. 스크립트를 실행하는 대신 스크립트 내용을 실행하고 있습니까 (예 : 스크립트 실행을위한 서브 쉘을 작성하지 않습니까)?


답변

  1. 그들은 똑같은 일을한다는 점에서 bash와 동일합니다. 반면에 source5 자 이상이며 POSIX 전용 쉘이나 Bourne으로 이식 할 수 없지만 .(점)은 사용하지 않습니다 source.

  2. 맞습니다. 파일을 소싱하면 현재 쉘에서 명령이 실행되고 현재 쉘 환경에 영향을 미칩니다. 소스 파일에 인수를 전달할 수 있으며 bash는 실제로 $PATH슬래시가 포함되어 있지 않으면 일반 명령처럼 파일 이름을 찾습니다 .


.vs 의 원래 질문과 관련이 source없지만 예제에서는

. ./myScript.sh 

와 동일하지 않다

source myScript.sh

반면 때문에 .source기능적으로 동일하며, myScript.sh./myScript.sh동일하지 않다. ./myScript.sh슬래시가 포함되어 있기 때문에 경로로 해석되며 셸은을 사용합니다 ./myScript.sh. 그러나 myScript.sh슬래시가 없으므로 쉘이 먼저 $PATH검색합니다. 에 대한 POSIX 지정 표준 동작입니다 .. 확장명 (경로 검색 후 현재 작업 디렉토리에서 검색하는 등) 또는 ./ 의 동작을 변경하는 옵션을 추가 할 수 있지만 대부분의 쉘은 기본적으로이 옵션을 사용합니다 source.


답변

그렇습니다. 기능상의 차이는 없습니다. .에 대한 내장 동의어입니다 source.

(편집 : 분명히이 만 사실 bashzsh일부 가벼운 쉘은 없습니다. source단지이 .때문에 POSIX에 의해 지정 ksh, dash, ash, 등이 없을 수 있습니다 source참조하십시오. jw013의 답변 정보를.)