[Shell Script] 디렉터리 이동 후 간단히 원래 장소 이동
디렉터리 이동 후 간단히 원래 장소 이동
스크립트 안에서 cd 명령어로 다른 디렉터리로 이동하고 나서 원래 디렉터리로 간단히 돌아가고 싶을 때 이용합니다 .
#!/bin/sh
# 괄호 안은 서브셸이 되므로 디렉터리 이동은 이 안에서만 유효 . #1
(
echo "Archive: /var/tmp/archive.tar"
cd /var/tmp
tar cvf archive.tar *.txt
)
# 스크립트 실행은 현재 디렉터리에서 처리
echo "Start: command.sh"
./command.sh
이 스크립트는 /var/tmp로 현재 디렉터리를 이동해서 그 안에 있는 확장자가 txt 인 파일을 archive.tar로 압축 후 원래 디렉터리로 돌아와 command.sh를 실행합니다 .
command.sh 예제
#!/bin/sh
echo "Good!!"
셸 스크립트는 cd 명령 후 작업용 디렉터리로 이동하기도 합니다.
처리가 끝나서 원래 디렉터리로 돌아가려면 처음에 자신이 있던 디렉터리 명을 저장해 두어야 합니다 .
하지만 원래 있던 곳을 저장 하지 않아도 간단한 방법으로 원래 디렉터리로 돌아갈 수 있습니다 .
바로 스크립트에서 서브셸을 사용하는 것 입니다.
#1은 서브셸 표기로 괄호로 둘러싼 부분이 서브셸로 실행됩니다 .
서브셸은 현재 셸 안에서 새롭게 실행되는 셸입니다 .
서브 셸을 부른 곳의 환경 설정은 서브셸에 이어지지만 서브셸 내부에서 일어나는 변경은 호출한 원래의 셸에 영향을 주지 않습니다 .
따라서 서브셸에서 현재 디렉터리를 변경하거나 변숫값을 변경해도 원래셸의 현재 디렉터리나 변숫값은 변하지 않습니다 .
이런 관계를 "부모와 자식 관계" 라고 유닉스 시스템에서 부릅니다 .
즉 , 서브셸은 자식 , 호출한 곳은 부모 프로세스가 됩니다.
결과