bash 스크립트에서 점 뒤에 공백이 있고 경로가 무엇을 의미합니까?


83

openvz 컨테이너에 usb 장치를 마운트하려고 할 때이 예제를 보았으며 이전 두 번째 줄에서 구조를 본 적이 없습니다. 그것이 무엇을 의미하는지 설명 할 수 있습니까?

#!/bin/bash
. /etc/vz/vz.conf

답변:


98

builtin과 동의어입니다 source. 그것은 것입니다 현재 쉘에있는 파일에서 명령을 실행 에서 읽을 때, help source또는 help ..

귀하의 경우, 파일 /etc/vz/vz.conf이 실행됩니다 (아마도 나중에 스크립트에서 사용될 변수 할당 만 포함합니다). 예를 들어 /etc/vz/vz.conf여러 가지 방법으로 파일을 실행하는 것과는 다릅니다 . 가장 명백한 것은 파일을 실행할 필요가 없다는 것입니다. 그런 다음 실행하는 것으로 생각 bash /etc/vz/vz.conf하지만 자식 프로세스에서만 실행되며 부모 스크립트는 자식이 수행 한 수정 사항 (예 : 변수)을 볼 수 없습니다.

예:

$ # Create a file testfile that contains a variable assignment:
$ echo "a=hello" > testfile
$ # Check that the variable expands to nothing:
$ echo "$a"

$ # Good. Now execute the file testfile with bash
$ bash testfile
$ # Check that the variable a still expands to nothing:
$ echo "$a"

$ # Now _source_ the file testfile:
$ . testfile
$ # Now check the value of the variable a:
$ echo "$a"
hello
$

도움이 되었기를 바랍니다.


14
참고 사항 : .대부분의 쉘 (sh, ash, ksh 등)에서 작동 source하며 bash에만 적용됩니다.
Dmytro Sirenko

3
@EarlGray source는 bash 뿐만 아니라 C 스타일 쉘 ( csh, tcsh)이며 zsh이기도합니다. 나열된. 것을 포함하여 Bourne 스타일의 쉘에서 작동합니다 . bash는 Bourne 스타일의 셸이며 사소한 복잡성이없는 bash 스크립트는 C 스타일 셸에서 거의 실행되지 않는다는 점을 고려하면 훨씬 이식성이 뛰어나야합니다. 그러나 bash의 동의어는 이식성에 부분적으로 존재합니다. .source.
Eliah Kagan

1
@EliahKagan 네, 맞습니다. .보편적으로 이식 가능하고 source널리 보급되어 있지만 제대로 작동하지 않는다고 말하는 것이 좋습니다 sh.
Dmytro Sirenko

5

`source '를 사용하여 스크립트를 실행할 때 기존 쉘 내에서 실행되면 스크립트가 작성하거나 수정 한 모든 변수는 스크립트가 완료된 후에도 계속 사용할 수 있습니다.

구문 파일 이름 [인수]

  source filename [arguments]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.