배시에서 . 연산자(명령)은 뭐죠?
글쓴이: u235 / 작성시간: 수, 2015/06/10 - 8:44오후
입수된 어떤 스크립트중 일부에 다음의 코드가 있습니다만
마지막행 첫문자 . 이 의미하는바를 아무리 생각해도 모르겠습니다.
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
문서에도 닷 ( . ) 연산자는 안보이던에
맨 앞의 . 은 무슨 도대체 의미인가요?
Forums:
자문자답이나
대상 스크립트가 실행 퍼미션이 없는 즉 읽기전용도 강제실행 시킬수 있는 요긴한 기능이네요.
그래도 실제 실행 퍼미션을 가지고 있는것과는 미묘한 차이가 있을법 한데...
James Gostling
source 명령어와 같습니다.
source 명령어와 같습니다.
앞분 설명대로 source명령과
앞분 설명대로 source명령과 같습니다.
source는 sub shell 을 만들지 않고, 현재 쉘에서 파일내용을 수행합니다.
실행퍼미션이 없는 파일을 수행하는 것도 틀린 이야기는 아닙니다만..
아래 내용을 수행해보시면 차이를 아실 수 있을듯.
둘다 살행 퍼미션 없이 되는건 같은데
pwd 까지 넣어 해보고 첨에는 신기했습니다.
즉 전자는 새 세션으로 실행하고 후자는 현 세션에서 실행하는군요.
ps : 세션이란 표현보단 프로세스 또는 pid가 보다 적절한것 같네요.
James Gostling
qiiiiiiiip님이 말씀하셨듯이 셸의 개념입니다.
qiiiiiiiip님이 말씀하셨듯이 셸의 개념입니다.
셀의 개념이라도
결국 새로운 bash 프로세스(pid)를 인스탄스로 생성하는거 잖아요.
James Gostling
댓글 달기