2011-03-06 4 views

답변

0

source 또는 .에 대한

덕분에 매개 변수로 파일을. 해당 파일의 모든 코드 행이 실행됩니다. 그래서 나는 생각하지 않는다.

. ./ 

것이 효과가있다.

$ . ./ 
-bash: .: ./: is a directory 
$ echo "echo Hello" > out 
$ . out 
Hello 
$ source out 
Hello 
3

".. /?" '?'라는 프로그램을 실행하려고합니다. 현재 디렉토리에 상주하며 현재 쉘에서 실행됩니다.

첫 번째 점은 '현재 셸에서 실행'을 의미하며 (새 항목을 생성하는 대신) './'은 '현재 디렉토리'및 '?'를 의미합니다. '?'라는 실행 파일을 의미합니다. 존재해야합니다.

+1

파일은'.'에 의해 소스가되기 위해 실행 가능할 필요는 없습니다. 쉘 스크립트 여야합니다 (예 : 컴파일 된 실행 파일을 소스로 만들 수 없음). – sepp2k

1

파일 이름에 .을 실행하면 쉘 명령 프롬프트에 입력 한 것처럼 파일의 명령이 실행됩니다. 쉘 스크립트와는 달리, 파일에 의해 생성 된 환경 변수 (및 이와 유사한) 변경 사항은 파일 실행 이상의 지속됩니다. 스크립트가 완료되면 쉘 스크립트에 의해 변경된 내용이 되돌려집니다.

1

. 또는 source 명령은 현재 파일로 주어진 파일을 읽습니다. 나는. 기본적으로 주어진 파일은 . filename을 입력하여 실행되는 셸 스크립트입니다. 그러나 . (또는 source)은 일반적으로 쉘 스크립트로 파일을 실행하는 것과 다릅니다. 따라서 서브 쉘을 생성하지 않으므로 변수가 유지됩니다 스크립트에 의해 내 보낸. 따라서 스크립트가 변수를 설정하고 내보내는 경우 스크립트가 끝나면 변수가 설정됩니다.