리눅스 실행 명령어 질문드립니다.

kimhw09의 이미지


예를 들어 sample 이라는 실행 파일이 존재할 때,

. sample

.(공백)(파일명)

위와 같은 사용이 가능하던데 어떻게 가능한 것인가요?

이 사용법?? 을 검색하려고 해도 키워드를 몰라 검색하지 못하고 있습니다...

알려주시면 감사하겠습니다.

Prentice의 이미지

bash 셸 기준 설명입니다. https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html

. filename [arguments]

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라고 부릅니다.

김정균의 이미지

설명은 Prentice님께서 잘 적어 주셨고, 용도는 정확하게 동일하다고 할 수는 없지만 다른 언어들의 include 정도의 용도로 사용하실 수 있습니다.

php의 include, python의 import, c/c++의 #include 랑 비슷한 용도로 사용을 한다고 보시면 됩니다. 예를 들어

helloworld() {
    echo "Hello world!"
}

라는 a.sh 라는 파일이 있다고 가정하고, 쉘 상에서

[root@host ~]$ . a.sh
[root@host ~]$ helloworld
Hello world!
[root@host ~]$

와 같이 현재 쉘에 a.sh를 include 시킨 후에, helloworld 함수를 명령어 같이 사용할 수도 있습니다. "." 은 source 로 대신 사용하기도 합니다.

[root@host ~]$ . a.sh
[root@host ~]$ source a.sh

위의 두 명령은 동일한 기능을 합니다. 전 명확히 하기 위하여 "." 보다는 "source"를 사용하는 편 입니다.

익명 사용자의 이미지

source 명령어는 알고는 있었는데 정확히 이해를 하지 못했네요..

말씀하신 것처럼 include로 이해하면 거리낌?없이 이해가 됩니다.

그런데 여러 파일을 source 명령어로 병행했을 때, 특정 파일을 해제해주어야 할 필요가 있을 듯 싶은데(같은 이름의 함수 또는 alias 존재)

여기서 source를 해제하려면 해당 프로세스인 bash를 종료해야하는 참 아이러니한 문제가 생겨버리네요..

어떤 식으로 해제를 하나요?

raymundo의 이미지

특정 파일의 내용을 통채로 취소시키는 법은 모르겠고,
정의된 함수나 변수는 unset 으로 제거할 수 있습니다. 위 댓글처럼 helloworld()함수를 정의했었다면

$ unset helloworld

좋은 하루 되세요!

ymir의 이미지

{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 』

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.