2018년 6월 4일 월요일

로그인쉘, 서브쉘 차이점.

로그인쉘에서 실행 : source ./test.sh
 
서브쉘에서 실행    : sh ./test.sh
차이점은
서브쉘에서 실행된 내용이나 실행환경은 서브쉘이 종료되는 순간 없어지는데
로그인쉘에서 실행된 내용이나 실행환경은 로그아웃 할 때까지 없어지지 않는다는데에 있습니다.

두 가지 경우 실행시 발생하는 과정을 자세히 설명하면

sh ./test.sh 실행을 하면
현재 쉘 하위로 쉘(서브쉘)이 하나 더 뜹니다.
cp, cd, cp 명령이 실행됩니다.
cd 명령 때문에 현재 작업중인 디렉토리 위치가 변경되었습니다.
서브쉘이 종료하면 상위의 원래 쉘(로그인쉘)로 돌아가게 됩니다.
서브쉘이 종료되면 현재 디렉토리 위치 정보는 없어지고
서브쉘이 시작된 위치로 돌아가게 됩니다.
그렇기 때문에 sh ./test.sh 을 실행한 후에는 작업중인 디렉토리 위치가 변경되지 않습니다.

하지만,
source ./test.sh 을 할 경우에는
서브쉘에서 해당 스크립트가 동작하지 않고, 로그인쉘에서 동작하기 때문에
cd 명령에 따라 작업중인 디렉토리 위치가 변경되게 됩니다.
source 명령 뒤에 오는 스크립트 첫줄에는 #!/bin/bash 가 필요없습니다. 
>> 경로 설정 없이 바로 적용하여 사용이 가능하므로.(?)
* 현재 로그인쉘 확인하기
    – echo $SHELL

댓글 없음:

댓글 쓰기

Heic to jpg 변환기 Mac Automator를 활용해서 만들어보기.

Heic to jpg 변환기 Automator를 활용해서 만들어보기!! 우선 이 글은 기본적인 shell script를 이해하는 분들이 활용하기 매우 좋습니다. 아이폰의 설정 - 카메라 - 포맷 분을 보면 아래와 같습니다. ...