셸 exec 역할

셸 스 크 립 트 실행
source 스 크 립 트 Execute commands from a file in the current shell.
이상 의 두 가 지 는 비교적 구분 하기 쉽다.
sh 실행 은 새 하위 셸 을 생 성하 여 스 크 립 트 를 실행 합 니 다. 실행 이 끝 난 후 부모 에 게 돌아 갑 니 다.source 는 스 크 립 트 내용 을 이 셸 프로 세 스에 불 러 와 서 실행 합 니 다.
아래 의 이 예 를 보면 알 수 있다.
[root@master ~]# cat test.sh 
#!/bin/bash
a=1

[root@master ~]# sh test.sh 
[root@master ~]# echo $a
[root@master ~]# source  test.sh 
[root@master ~]# echo $a
1
\ # source 에서 스 크 립 트 를 실행 하 는 역할 에서 a 변 수 는 이 셸 환경 에 있 습 니 다.한편, sh 는 test. sh 의 변 수 를 실행 하고 하위 셸 에서 스 크 립 트 가 실 행 된 후에 부모 셸 로 돌아 가기 때문에 a 변 수 는 비어 있 습 니 다 (하위 셸 의 환경 변 수 는 부모 셸 에 의 해 계승 되 지 않 습 니 다).
source 상용 source / etc / profile
[exec 에 대한 어 려 운 점 을 말씀 드 리 겠 습 니 다.]
help exec 공식 도움말 정보 보기
  Replace the shell with the given command. 
    Execute COMMAND, replacing this shell with the specified program.
    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,
    any redirections take effect in the current shell.
해석 exec 는 두 가지 기능 이 있 습 니 다.
현재 셸 대신 명령 프로그램 을 통 해명령 실행 이 완료 되면 이 셸 을 종료 합 니 다
[andy@master ~]$ echo $SHLVL
1
[andy@master ~]$ exec ls
scripts
... 터미널 종료
주: exec 는 셸 프로 세 스 대신 ls 명령 프로그램 을 실 행 했 습 니 다. ls 가 실 행 된 후에 종료 되 었 습 니 다.그래서 터미널 을 종료 합 니 다.
2. exec 뒤에 명령 을 받 지 않 으 면 현재 셸 에서 실행 되 는 재 설정 이 적 용 됩 니 다.(사용자 정의 파일 설명 자 를 위 한 생 성)
예:
#/bin/bash
exec 3&-

주: read - u3 line 은 파일 설명자 3 에서 커서 가 있 는 줄 의 할당 값 을 라인 에 읽 는 것 을 의미 합 니 다.

좋은 웹페이지 즐겨찾기