작은 새 가 셸 프로 그래 밍 (3) 스 크 립 트 의 다른 실행 방식 에 미 친 영향

명령 실행 방식
Shell 스 크 립 트 를 실행 하 는 방식 은 보통 다음 과 같은 네 가지 가 있 습 니 다.
  • 방식 1: bash ./test.sh
  • 방식 2: ./test.sh
  • 방식 3: source ./test.sh
  • 방식 4: . ./test.sh
  • 실행 방식 의 차이
    방식 1 bash 방식 으로 스 크 립 트 를 실행 하면 현재 터미널 아래 에 bash 서브 프로 세 스 가 생 겨 스 크 립 트 를 실행 하기 때문에 현재 환경 에 영향 을 주지 않 습 니 다.
    [root@lincoding usr]# bash ./test.sh

    방식 2 ./test.sh 방식 으로 실행 되면 스 크 립 트 의 첫 번 째 줄 은 어느 Shell 해석 기 가 어떤 Shell 해석 기의 하위 프로 세 스 를 만들어 스 크 립 트 를 실행 하 는 지 설명 합 니 다. 만약 에 설명 한 Shell 해석 기 가 bash 라면 방식 과 유사 합 니 다.
    [root@lincoding usr]# ./test.sh

    방식 3 과 방식 4 가 실 행 될 때 위의 방식 1 과 방식 이 약간 다르다.그 가 실행 할 때 현재 터미널 을 통 해 셸 스 크 립 트 를 실행 하기 때문에 하위 프로 세 스 가 발생 하지 않 기 때문에 현재 환경 에 영향 을 줄 수 있 습 니 다.
    [root@lincoding usr]# source ./test.sh
    [root@lincoding usr]# . ./test.sh

    실행 방식 의 영향 비교
    상술 한 것 도 방식 1 과 방식 2 를 언급 했다. 셀 스 크 립 트 를 실행 하기 때문에 현재 환경 에 영향 을 주지 않 는 다.한편, 방식 2 와 방식 3 은 현재 터미널 에서 Shell 스 크 립 트 를 실행 하기 때문에 현재 환경 에 영향 을 줄 수 있 습 니 다.
    밤 을 들 어 디 렉 터 리 를 바 꾸 는 test. sh 스 크 립 트 를 만 듭 니 다. 내용 은 다음 과 같 습 니 다.
    #!/bin/bash
    
    # 切换到tmp目录
    cd /tmp
    # 打印当前目
    pwd

    테스트. sh 스 크 립 트 를 실행 하 는 방법 은 다음 과 같 습 니 다.
    [root@lincoding /]# bash test.sh 
    /tmp
    [root@lincoding /]# pwd
    /

    스 크 립 트 를 실행 하 는 방식 을 사용 하면 실행 권한 을 부여 할 필요 가 없습니다.
    방식 2. test. sh 스 크 립 트 를 실행 합 니 다. 그 결 과 는 다음 과 같 습 니 다.
    [root@lincoding /]# chmod u+x test.sh 
    [root@lincoding /]# ls -l test.sh 
    -rwxr--r--. 1 root root 64 Sep 26 18:34 test.sh
    [root@lincoding /]# ./test.sh 
    /tmp
    [root@lincoding /]# pwd
    /

    방식 1 과 방식 2 가 /tmp 디 렉 터 리 로 전환 하 는 Shell 스 크 립 트 를 실행 한 후에 터미널 이 있 는 디 렉 터 리 에 변화 가 없 는 지, 아니면 / 루트 디 렉 터 리 에 있 는 지, 방식 1 과 방식 2 의 실행 방식 이 현재 환경 에 영향 을 주지 않 는 지 설명 합 니 다.
    이 유 는 Shell 스 크 립 트 를 1, 2 로 실행 할 때 하위 프로 세 스 가 Shell 스 크 립 트 를 실행 하기 때 문 입 니 다. 스 크 립 트 실행 이 끝 난 후에 하위 프로 세 스 가 종료 되 고 부모 프로 세 스 로 돌아 가면 현재 있 는 환경 에 영향 을 주지 않 습 니 다.
    다음은 방식 3 집행 결과:
    [root@omp120 /]# source ./test.sh 
    /tmp
    [root@omp120 tmp]# pwd
    /tmp

    방식 4 실행 결과:
    [root@omp120 /]# . ./test.sh 
    /tmp
    [root@omp120 tmp]# pwd
    /tmp

    위의 방식 3 과 방식 4 의 실행 결 과 를 통 해 알 수 있 듯 이 /tmp 디 렉 터 리 로 전환 하 는 Shell 스 크 립 트 를 실행 한 후에 현재 터미널 환경 이 있 는 디 렉 터 리 는 /tmp 디 렉 터 리 로 전환 되 었 습 니 다. 설명 방식 3 과 방식 4 의 실행 방식 은 이전 환경 에 영향 을 미 쳤 습 니 다.
    작은 매듭
    방식 1 과 방식 2 가 Shell 스 크 립 트 를 실행 할 때 하위 프로 세 스 가 Shell 스 크 립 트 를 실행 합 니 다. 스 크 립 트 가 끝 난 후에 하위 프로 세 스 가 종료 되 고 부모 프로 세 스 로 돌아 가면 현재 있 는 환경 에 영향 을 주지 않 습 니 다.
    한편, 방식 2 와 방식 4 는 현재 환경 에서 Shell 스 크 립 트 를 실행 하 는 것 이다. 즉, 현재 프로 세 스에 서 Shell 스 크 립 트 를 실행 하면 그 실행 결 과 는 현재 환경 에 영향 을 줄 것 이다.

    좋은 웹페이지 즐겨찾기