Read and execute commands from the filename argument in the current shell context. If filename does not contain a slash, the PATH variable is used to find filename. When Bash is not in POSIX mode, the current directory is searched if filename is not found in $PATH. If any arguments are supplied, they become the positional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the exit status of the last command executed, or zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero. This builtin is equivalent to source.
cd, pwd처럼 셸 자체적으로 지원하는 명령(?)으로 shell builtins, shell builtin commands라고 부릅니다.
bash 셸 기준 설명입니다.
bash 셸 기준 설명입니다. https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
cd, pwd처럼 셸 자체적으로 지원하는 명령(?)으로 shell builtins, shell builtin commands라고 부릅니다.
설명은 Prentice님께서 잘 적어 주셨고, 용도는
설명은 Prentice님께서 잘 적어 주셨고, 용도는 정확하게 동일하다고 할 수는 없지만 다른 언어들의 include 정도의 용도로 사용하실 수 있습니다.
php의 include, python의 import, c/c++의 #include 랑 비슷한 용도로 사용을 한다고 보시면 됩니다. 예를 들어
라는 a.sh 라는 파일이 있다고 가정하고, 쉘 상에서
와 같이 현재 쉘에 a.sh를 include 시킨 후에, helloworld 함수를 명령어 같이 사용할 수도 있습니다. "." 은 source 로 대신 사용하기도 합니다.
위의 두 명령은 동일한 기능을 합니다. 전 명확히 하기 위하여 "." 보다는 "source"를 사용하는 편 입니다.
답변 정말 감사합니다. 그런데 궁금한 것이 또 있습니다.
source 명령어는 알고는 있었는데 정확히 이해를 하지 못했네요..
말씀하신 것처럼 include로 이해하면 거리낌?없이 이해가 됩니다.
그런데 여러 파일을 source 명령어로 병행했을 때, 특정 파일을 해제해주어야 할 필요가 있을 듯 싶은데(같은 이름의 함수 또는 alias 존재)
여기서 source를 해제하려면 해당 프로세스인 bash를 종료해야하는 참 아이러니한 문제가 생겨버리네요..
어떤 식으로 해제를 하나요?
특정 파일의 내용을 통채로 취소시키는 법은
특정 파일의 내용을 통채로 취소시키는 법은 모르겠고,
정의된 함수나 변수는 unset 으로 제거할 수 있습니다. 위 댓글처럼 helloworld()함수를 정의했었다면
좋은 하루 되세요!
음 ..
{linux|unix|shell} dot command 로 검색해 보시면 되고, dot 대신 source 로 검색해도 됩니다.
DOT language 나 dot file (hidden file) 과 혼동하지 않도록 유의하시구요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기