질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

쉘스크립트 실행 질문이여~

작성자 정보

  • di127 작성
  • 작성일

컨텐츠 정보

본문

./파일명

이런식으로 실행하는거로 아는데

 

. 파일명해도 실행이 되고, 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 값이 바뀌게 되는 겁니다.

초보님의 댓글

  • 초보
  • 작성일
덧붙여

.  ./test.sh  과  source  ./test.sh  명령은 같은 것입니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,153 명
  • 현재 강좌수 :  36,477 개
  • 현재 접속자 :  259 명