스크립트 실행(fork함)
- 스크립트가 fork와 exec를 통해 실행됨
- 부모프로세스 (환경변수/ bash / 지역변수) --- fork---> 자식프로세스 (환경변수 / bash / 지역변수) ---exec---> 환경변수 복사 sub bash 실행
- 스크립트 실행이 종료되면 스크립트 실행 위해 running한 서브쉘은 종료됨
- 환경변수는 복사되지만 지역변수는 복사되지 않음
- 로그인쉘과 같은 종류의 sub shell인 bash가 실행되고 스크립트를 실행함
예시
a=100
export b=100
bash //서브 쉘을 실행시켜 환경변수만 복사됨을 확인
ps -f
echo $a // 지역변수인 a는 복사되지 않음
echo $b // 환경변수 b는 복사됨
vi test.sh
date
A=100
ps -f
echo A is $A
chmod +x test.sh
./test.sh // 스크립트 실행을 위해 서브 bash가 실행중임을 확인가능
echo $A // => 스크립트 종료 시 서브 쉘은 종료되고 사용했던 스크립트 내 변수들도 함께 삭제됨
스크립트 실행(fork안함)
- . ./filename / source ./filename
- fork를 하지 않고 현재 쉘이 스크립트 실행함
- 스크립트 내 사용된 변수가 메모리에 그대로 남음
- 실행퍼미션 없이도 실행가능
- 로그인 환경파일 변경시 재로그인 하지 않고 변경된 변수의 저오를 메모리에 탑재하여 즉시 사용할 때 씀
- 외부 스크립트에서 외부변수를 호출하여 메모리에 탑재하고 사용하려는 목적에 씀
예시
chmod -x test.sh //실행권한 제거
. ./test.sh
echo $A
스크립트 실행방법
- #! : 쉘스크립트를 실행할 서브 쉘 종류 지정 / 생략시 로그인쉘과 같은 종류의 서브쉘이 스크립트 실행함 / 반드시 첫번째 라인에 해야함 아니면 무시됨
- bash -x : 원본라인 출력 +문자와 함께 출력함
- bash -x : 원본라인 출력 결과 출력
예시
bash ./test.sh
bash -x ./test.sh
bash -v ./test.sh
'Linux > Linux Shell' 카테고리의 다른 글
[kdump] kdump란? (0) | 2024.07.28 |
---|---|
[Shell] 쉘이란 / 쉘의 변수 (2) | 2023.12.29 |