Shell 스 크 립 트 에서 다른 Shell 스 크 립 트 를 호출 하 는 세 가지 방식
Command
Explanation
fork
새 키 Shell 을 열 어 실행 합 니 다.하위 Shell 은 부모 Shell 에서 환경 변 수 를 계승 할 수 있 지만 하위 Shell 의 환경 변 수 는 부모 Shell 에 가 져 오지 않 습 니 다.
exec
같은 Shell 에서 실행 되 지만 부모 스 크 립 트 에서 exec 행 이후 의 내용 은 더 이상 집행 되 지 않 습 니 다.
source
같은 Shell 에서 실 행 됩 니 다.호출 된 스 크 립 트 에서 설명 한 변수 와 환경 변 수 는 주 스 크 립 트 에서 가 져 오고 사용 할 수 있 습 니 다.두 스 크 립 트 를 합 쳐 실행 하 는 것 과 같 습 니 다.
첫 번 째:fork 특징:하위 PID 가 생 성 되 고 중복 호출 이 가능 합 니 다.
♦fork 는 가장 일반적인 것 입 니 다.바로 스 크 립 트 에서 path/to/foo.sh 로 호출 하 는 것 입 니 다.
♦foo.sh 이 스 크 립 트,예 를 들 어 foo.sh 가 현재 디 렉 터 리 에 있 으 면./foo.sh 입 니 다.실행 할 때 terminal 은 키 Shell 을 새로 열 어 스 크 립 트 foo.sh 를 실행 하고,하위 Shell 을 실행 할 때 부모 Shell 은 그대로 있 습 니 다.하위 셸 을 실행 하고 부모 셸 로 돌아 갑 니 다.하위 셸 은 부모 셸 에서 환경 변 수 를 계승 하지만 하위 셸 의 환경 변 수 는 부모 셸 로 가 져 오지 않 습 니 다.
1.편집 에 들 어가 기:
[root@localhost ~]# vim liqiang-2.sh
2.내용 호출 쓰기 편집:
echo
./liqiang.sh
3.출력 결과
[root@localhost ~]# ./liqiang-2.sh
여기 서 호출 합 니 다.hollo
hollo
두 번 째:exec 특징:exec 호출 후 모든 코드 가 실행 되 지 않 습 니 다.
♦exec 는 fork 와 달리 호출 된 스 크 립 트 를 실행 하기 위해 키 Shell 을 새로 열 필요 가 없습니다.호출 된 스 크 립 트 는 부모 스 크 립 트 와 같은 Shell 에서 실 행 됩 니 다.그러나 exec 를 사용 하여 새 스 크 립 트 를 호출 하면 부모 스 크 립 트 의 exec 줄 이후 의 내용 은 더 이상 실행 되 지 않 습 니 다.이것 은 exec 와 source 의 차이 이다.
1.내용 호출 쓰기 편집:
echo
./liqiang.sh
echo exec
exec ./liqiang-3.sh
echo source
source liqiang-4.sh
echo
./liqiang.sh
echo exec
exce liqiang-3.sh
echo source
source liqiang-4.sh
echo
./liqiang.sh
echo exec
exce liqiang-3.sh
echo source
source liqiang-4.sh
2.출력 결과:첫 번 째 exec 를 실행 한 후 아래 의 것 은 더 이상 실행 하지 않 는 것 이 특징 이다.
[root@localhost ~]# ./liqiang-2.sh
hollo
hollo
exec
세 번 째:sourcesource 의 특징 은 하위 PID,즉 하위 프로 세 스 를 만 들 지 않 습 니 다.그 는 사용 되 는 스 크 립 트 를 현재 셸 스 크 립 트 에 복사 하여 실행 할 수 있 습 니 다.중복 호출 될 수 있 습 니 다.♦fork 와 의 차 이 는 호출 된 스 크 립 트 를 실행 하기 위해 키 Shell 을 새로 열지 않 고 같은 Shell 에서 실행 하 는 것 입 니 다.따라서 호출 된 스 크 립 트 에서 설명 하 는 변수 와 환경 변 수 는 주 스 크 립 트 에서 가 져 오고 사용 할 수 있 습 니 다.
1.내용 호출 쓰기 편집:
echo
./liqiang.sh
echo exec
#exec ./liqiang-3.sh
echo source
source liqiang-4.sh
echo
./liqiang.sh
echo exec
#exce liqiang-3.sh
echo source
source liqiang-4.sh
echo
./liqiang.sh
echo exec
exec liqiang-3.sh
echo source
source liqiang-4.sh
♦2.실행 결과:
[root@localhost ~]# ./liqiang-2.sh
hollo
hollo
exec
source
hollo
hollo
exec
source
hollo
hollo
exec #
주의:♦source 방식 의 결 과 는 둘 이 같은 프로 세 스에 서 실행 되 는 것 이다.이 방식 은 두 스 크 립 트 를 먼저 합쳐서 실행 하 는 것 과 같다.
♦여러 스 크 립 트 에 권한 부여
chmod a+x liqiang-2.sh liqiang-3.sh liqiang-4.sh
Shell 스 크 립 트 에서 다른 Shell 스 크 립 트 를 호출 하 는 세 가지 방식 에 대한 자세 한 설명 은 여기까지 입 니 다.Shell 에서 다른 Shell 스 크 립 트 를 호출 하 는 내용 에 대해 서 는 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.