리눅스 분류
쉘스크립트 실행 질문이여~
작성자 정보
- di127 작성
- 작성일
컨텐츠 정보
- 1,749 조회
- 2 댓글
- 0 추천
- 목록
본문
./파일명
이런식으로 실행하는거로 아는데
. 파일명해도 실행이 되고, source 파일명 이렇게 쳐도 실행이 되더라고요
이 3가지 방법 차이점이 뭔지 좀 알려주세요..
관련자료
-
이전
-
다음
댓글 2
초보님의 댓글
- 초보
- 작성일
1. "." 과 "./" 의 의미차이는 현재디렉토리만 나타내느냐 현재디렉토리에서 경로를 설정주려 했느냐의 차이가 되겠지요? 결국 ./ 뒤에 다른 디렉토리명이 없으니까 현재 디렉토리를 의미하게 되었습니다.
2. 그럼 ".파일명" 과 " source 파일명" 의 차이가 뭐냐
.파일명 으로 실행을 하면 또 다른 쉘을 생성하게 되면서 실행을 하게 됩니다.
쉘을 fork 한다고 하죠?
그렇지만 source 파일명은 쉘을 fork 하지 않고 현재 쉘 프로세스에서 실행하게
됩니다.
그럼 예를 들어 볼게요.
vi test.sh 해서
#/bin/bash
WHAT_SHELL="contents in shell script"
라고 내용을 입력해 봅시다.
그리고
[root@localhost ~]# WHAT_SHELL="current shell"
라고 현재쉘에서 변수에 값을 입력해 봅니다.
그리고
[root@localhost ~]# ./test.sh
라고 명령을 실행 봅시다.
그럼 echo $WHAT_SHELL 이라고 명령을 내리면
어떤 값이 나올까요? contents in shell script 가 나올까요? current shell 이 나올까요? 답은 current shell 입니다. 왜냐하면 ./test.sh 명령으로 현재쉘이 아닌 forked 된 쉘로 test.sh 스크립트를 실행했기때문입니다.
결과는
[root@localhost ~]# echo $WHAT_SHELL
current shell
이렇게 나옵니다.
자 그럼 이제는
[root@localhost ~]# source test.sh
라고 실행해 봅시다. 결과가 어떻게 나올까요?
결과는
[root@localhost ~]# echo $WHAT_SHELL
contents in shell script
라고 나옵니다. 다시 말해서 쉘이 fork 되지 않고 현재 쉘에서 실행되었기때문에
WHAT_SHELL 변수를 읽어 들이고 source test.sh 을 실행시킬 때 WHAT_SHELL 변수에
contents in shell script 내용으로 값이 입력됩니다.
따라서 echo $WHAT_SHELL 명령을 내리게 되면 현재 쉘의 $WHAT_SHELL 값이 바뀌게 되는 겁니다.
2. 그럼 ".파일명" 과 " source 파일명" 의 차이가 뭐냐
.파일명 으로 실행을 하면 또 다른 쉘을 생성하게 되면서 실행을 하게 됩니다.
쉘을 fork 한다고 하죠?
그렇지만 source 파일명은 쉘을 fork 하지 않고 현재 쉘 프로세스에서 실행하게
됩니다.
그럼 예를 들어 볼게요.
vi test.sh 해서
#/bin/bash
WHAT_SHELL="contents in shell script"
라고 내용을 입력해 봅시다.
그리고
[root@localhost ~]# WHAT_SHELL="current shell"
라고 현재쉘에서 변수에 값을 입력해 봅니다.
그리고
[root@localhost ~]# ./test.sh
라고 명령을 실행 봅시다.
그럼 echo $WHAT_SHELL 이라고 명령을 내리면
어떤 값이 나올까요? contents in shell script 가 나올까요? current shell 이 나올까요? 답은 current shell 입니다. 왜냐하면 ./test.sh 명령으로 현재쉘이 아닌 forked 된 쉘로 test.sh 스크립트를 실행했기때문입니다.
결과는
[root@localhost ~]# echo $WHAT_SHELL
current shell
이렇게 나옵니다.
자 그럼 이제는
[root@localhost ~]# source test.sh
라고 실행해 봅시다. 결과가 어떻게 나올까요?
결과는
[root@localhost ~]# echo $WHAT_SHELL
contents in shell script
라고 나옵니다. 다시 말해서 쉘이 fork 되지 않고 현재 쉘에서 실행되었기때문에
WHAT_SHELL 변수를 읽어 들이고 source test.sh 을 실행시킬 때 WHAT_SHELL 변수에
contents in shell script 내용으로 값이 입력됩니다.
따라서 echo $WHAT_SHELL 명령을 내리게 되면 현재 쉘의 $WHAT_SHELL 값이 바뀌게 되는 겁니다.
초보님의 댓글
- 초보
- 작성일
덧붙여
. ./test.sh 과 source ./test.sh 명령은 같은 것입니다.
. ./test.sh 과 source ./test.sh 명령은 같은 것입니다.