Linux 에서 셸 과 하위 셸 및 Script 를 실행 하 는 몇 가지 방식

Linux 가 호스트 에 로그 인 한 후에 Script 를 실행 하기 전에 우 리 는 이미 하나의 셸 에 있 습 니 다. 즉, Login 셸 입 니 다.앞으로 Script 를 실행 할 부모 셸 입 니 다.루트 계 정 은 기본적으로 / bin / bash 입 니 다.     Linux 에서 모든 계 정 은 Login 셸 을 사용자 정의 할 수 있 습 니 다. / etc / passwd 파일 에 있 습 니 다.Login 셸 은 일곱 번 째 필드 에 정의 합 니 다. 이 필드 의 셸 프로그램 이 존재 하지 않 거나 비합법적 이거 나 실행 에 실패 하면 호스트 에 로그 인 할 수 없습니다.     셸 스 크 립 트 를 실행 할 때 부모 셸 은 스 크 립 트 프로그램의 첫 줄 에 따라 \ #!이후 지정 한 셸 프로그램 은 하위 셸 환경 을 열 고 하위 셸 에서 이 셸 스 크 립 트 를 실행 합 니 다. 실행 이 완료 되면 하위 셸 이 끝나 고 부모 셸 로 돌아 가 원래 부모 셸 환경 에 영향 을 주지 않 습 니 다.Linux 실행 스 크 립 트 는 세 가지 실행 방식 이 있 습 니 다. 1. source filename 또는 filename  메모. Filename 에... filename 과 빈 칸 이 있 습 니 다.  이 명령 식 은 현재 셸 환경 에서 filename 의 명령 을 읽 고 실행 합 니 다.이 filename 파일 은 실행 권한 이 없습니다.수정 한 초기 화 문 서 를 다시 실행 하 는 데 사 용 됩 니 다.source 명령 (C Shell 에서 온) 은 bash 셸 의 내장 명령 입 니 다.명령 을 누 르 면 점 기호 입 니 다. (Bourne Shell 에서 왔 습 니 다) 바로 파일 의 명령 을 순서대로 수행 하 는 것 입 니 다.2. sh filename 혹은 bash filename  이 명령 은 현재 bash 환경 에서 키 셸 을 새로 만 들 고 FileName 의 명령 을 읽 고 실행 하 는 것 입 니 다. 이 filename 파일 은 실행 권한 이 없습니다.3.  ./filename   이 명령 은 filename 의 명령 을 읽 고 실행 하기 위해 키 셸 을 엽 니 다. 이 파일 은 실행 가능 한 권한 이 있어 야 합 니 다.chmod +x filename。 세 가지 차이 점: 1. 셸 스 크 립 트 가 실행 가능 한 권한 이 있 을 때 sh filename 과. / filename 으로 스 크 립 트 를 실행 하 는 것 은 다 르 지 않 습 니 다.. /filename 은 현재 디 렉 터 리 가 PATH 에 없 기 때문에 모든 "." 는 현재 디 렉 터 리 를 나타 내 는 데 사 용 됩 니 다.2. sh filename 은 하위 셸 을 다시 만 들 고 하위 셸 에서 스 크 립 트 의 문 구 를 실행 합 니 다. 이 하위 셸 은 부모 셸 의 환경 변 수 를 계승 하지만 하위 셸 이 새로 만 들 고 변 경 된 변 수 는 부모 셸 을 사용 하지 않 는 한 부모 셸 로 가 져 오지 않 습 니 다.3. source filename: 이 명령 은 스 크 립 트 의 문 구 를 간단하게 읽 고 현재 셸 에서 순서대로 실 행 했 을 뿐 새 하위 셸 을 만 들 지 않 았 습 니 다.스 크 립 트 에 있 는 모든 새로 만 들 고 변 수 를 바 꾸 는 문 구 는 현재 셸 에 저 장 됩 니 다.예: 1. test. sh 스 크 립 트 를 새로 만 듭 니 다. 내용 은 A = 1 입 니 다.2. 그리고 chmod + x test. sh 를 실행 할 수 있 도록 합 니 다.3. sh test. sh 를 실행 한 후 echo $A 가 비어 있 습 니 다. A = 1 이 현재 셸 에 전송 되 지 않 았 기 때 문 입 니 다.4.. / test. sh 를 실행 한 후에 도 같은 효과 가 있 습 니 다.5. source test. sh 또는. test. sh 를 실행 한 다음 echo $A 는 1 을 표시 합 니 다. A = 1 의 변 수 는 현재 셸 에 있 음 을 설명 합 니 다.예: 1. sh01. sh 스 크 립 트 를 새로 만 듭 니 다. 내용 은 \ #! /bin/bash echo $SHLVL  (현재 셸 의 차원 을 출력 합 니 다) 2. 그리고 chmod + x sh01. sh 를 실행 할 수 있 도록 합 니 다.3. sh 01. sh 를 실행 한 후 3 을 출력 합 니 다.4. 실행. / sh 01. sh 이후 에 도 같은 효과 가 있 습 니 다.5. source sh01. sh 또는. sh01. sh 를 실행 하고 출력 2.예: 1. 호스트 에 로그 인 한 후 터미널 을 열 고 echo $SHLVL 을 입력 하고 2 를 출력 합 니 다.2. bash 를 입력 하고 키 셸 에 들 어간 다음 echo $SHLVL 을 입력 하여 3 을 출력 합 니 다.3. exit 를 입력 하고 echo $SHLVL 을 입력 하여 2 를 출력 합 니 다.4. exit 를 입력 하고 터미널 을 종료 합 니 다. 
[root@uyhd000225 hah]# more usevar.sh 
#!/bin/bash
./var.sh
echo $vari
[root@uyhd000225 hah]# more var.sh 
#!/bin/bash
vari=pianzi
[root@uyhd000225 hah]# ./usevar.sh 

[root@uyhd000225 hah]# more usevar.sh 
#!/bin/bash
source var.sh
echo $vari
[root@uyhd000225 hah]# ./usevar.sh 
pianzi
[root@uyhd000225 hah]# ./usevar.sh 
pianzi
[root@uyhd000225 hah]# more usevar.sh 
#!/bin/bash
. var.sh
echo $vari
[root@uyhd000225 hah]#

다음으로 이동:http://blog.csdn.net/liuyiy/article/details/8063817

좋은 웹페이지 즐겨찾기