배시에서 . 연산자(명령)은 뭐죠?

u235의 이미지

입수된 어떤 스크립트중 일부에 다음의 코드가 있습니다만
마지막행 첫문자 . 이 의미하는바를 아무리 생각해도 모르겠습니다.

PREREQ=""

# Output pre-requisites
prereqs()
{
echo "$PREREQ"
}

case "$1" in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions # 문제의 행...

문제의 행에서 hook-functions 요건 데비안 계열에서 initramfs를 패치하는 실행 스크립트 같은데 기본 퍼미션은 644로 세팅된것 같습니다.
물론 그대로 실행하면 아무 표시도 안나오지만
그로인해 update-initranfs 패치가 실패하는듯 보입니다. (그 스크립트 제거시 업데이트는 성공됨)

여기 https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html
문서에도 닷 ( . ) 연산자는 안보이던에
맨 앞의 . 은 무슨 도대체 의미인가요?

u235의 이미지

대상 스크립트가 실행 퍼미션이 없는 즉 읽기전용도 강제실행 시킬수 있는 요긴한 기능이네요.

그래도 실제 실행 퍼미션을 가지고 있는것과는 미묘한 차이가 있을법 한데...

James Gostling

klara의 이미지

source 명령어와 같습니다.

qiiiiiiiip의 이미지

앞분 설명대로 source명령과 같습니다.
source는 sub shell 을 만들지 않고, 현재 쉘에서 파일내용을 수행합니다.

실행퍼미션이 없는 파일을 수행하는 것도 틀린 이야기는 아닙니다만..

아래 내용을 수행해보시면 차이를 아실 수 있을듯.

$ cat a.sh
echo hello
cd /
$ bash a.sh
$ pwd
$ source a.sh
$ pwd

u235의 이미지

pwd 까지 넣어 해보고 첨에는 신기했습니다.
즉 전자는 새 세션으로 실행하고 후자는 현 세션에서 실행하는군요.

ps : 세션이란 표현보단 프로세스 또는 pid가 보다 적절한것 같네요.

James Gostling

klara의 이미지

qiiiiiiiip님이 말씀하셨듯이 셸의 개념입니다.

u235의 이미지

결국 새로운 bash 프로세스(pid)를 인스탄스로 생성하는거 잖아요.

James Gostling

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.