Linux 에서 셸 스 크 립 트 를 실행 하 는 5 가지 방법 요약
2764 단어 SHELL
방법 1: 셸 스 크 립 트 가 있 는 디 렉 터 리 로 전환 (이때 작업 디 렉 터 리 라 고 함) 셸 스 크 립 트 를 실행 합 니 다.
코드 는 다음 과 같 습 니 다:
cd /data/shell
./hello.sh
현재 작업 디 렉 터 리 에서 hello. sh 를 실행 한 다 는 뜻 입 니 다..../를 추가 하지 않 으 면 bash 는 hello. sh 의 오류 정 보 를 찾 지 못 할 수도 있 습 니 다.현재 작업 디 렉 터 리 (/data/shell) 는 실행 프로그램의 기본 검색 경로 열 에 있 지 않 을 수 있 습 니 다. 즉, 환경 변수 PASH 의 내용 에 있 지 않 습 니 다.PATH 의 내용 을 보기 위해 echo $PASH 명령 을 사용 할 수 있 습 니 다.현재/data/shell 은 환경 변수 PASH 에 없 기 때문에./를 더 해 야 실행 할 수 있 습 니 다.
방법 2: bash 셸 스 크 립 트 를 절대 경로 로 실행 합 니 다.
코드 는 다음 과 같 습 니 다:
/data/shell/hello.sh
방법 3: bash 나 sh 를 직접 사용 하여 bash 셸 스 크 립 트 를 실행 합 니 다.
코드 는 다음 과 같 습 니 다:
cd /data/shell
bash hello.sh
혹시
코드 는 다음 과 같 습 니 다:
cd /data/shell
sh hello.sh
방법 3 으로 실행 된다 면 셸 의 실행 권한 을 미리 설정 하지 않 아 도 되 고 셸 파일 의 첫 줄 (bash 경 로 를 지정 합 니 다) 을 쓰 지 않 아 도 됩 니 다.방법 셋 째 는 hello. sh 를 매개 변수 로 sh (bash) 명령 에 전달 하 는 것 이기 때문이다.이 때 는 hello. sh 가 직접 실행 하 는 것 이 아니 라 다른 사람 에 게 호출 되 어 실행 되 기 때문에 권한 을 집행 하지 마 세 요.그럼 bash 경 로 를 지정 하지 않 아 도 자 연 스 럽 게 이해 할 수 있 겠 네요. 하하............................................
방법 4: 현재 셸 환경 에서 bash 셸 스 크 립 트 를 실행 합 니 다:
코드 는 다음 과 같 습 니 다:
cd /data/shell
. hello.sh
혹시
코드 는 다음 과 같 습 니 다:
cd /data/shell
source hello.sh
세 가지 방법 으로 셸 스 크 립 트 를 실행 할 때 현재 셸 (부모 셸 이 라 고 함) 에서 키 셸 환경 을 엽 니 다. 이 셸 스 크 립 트 는 이 하위 셸 환경 에서 실 행 됩 니 다.셸 스 크 립 트 가 실 행 된 후 하위 셸 환경 이 닫 히 고 다시 부모 셸 로 돌아 갑 니 다.방법 넷 째 는 현재 셸 에서 실 행 됩 니 다.
방법 5: 셸 에서 다른 셸 을 시작 합 니 다.
셸 스 크 립 트 를 실행 할 때 외부 스 크 립 트, exec (exec script. sh), source (source script. sh), fork (./script. sh) 를 호출 하 는 세 가지 방법 이 있 습 니 다. 1、exec(exec/home/script.sh): exec 를 사용 하여 스 크 립 트 를 호출 합 니 다. 실 행 된 스 크 립 트 는 현재 셸 의 환경 변 수 를 계승 합 니 다.그러나 사실상 exec 에 새로운 프로 세 스 가 생 겼 습 니 다. 그 는 주 셸 의 프로 세 스 자원 을 점용 하고 스 크 립 트 내용 을 교체 합 니 다. 원래 셸 의 PID 번 호 를 계승 합 니 다. 즉, 원래 셸 의 나머지 내용 은 실행 되 지 않 습 니 다.
2、source(source/home/script.sh)
source 나 "."를 사용 하여 외부 스 크 립 트 를 호출 합 니 다. 새로운 프로 세 스 가 발생 하지 않 습 니 다. 현재 셸 환경 변 수 를 계승 하고 호출 된 스 크 립 트 가 실 행 된 후에 환경 변수 와 성명 변 수 는 현재 셸 에 의 해 보 존 됩 니 다. 스 크 립 트 의 내용 을 복사 하여 직접 실행 하 는 것 과 같 습 니 다.실행 이 끝 난 후 원래 의 셸 이 계속 실 행 됩 니 다.
3、fork(/home/script.sh)
스 크 립 트 를 직접 실행 하면 현재 셸 을 부모 프로 세 스 로 하여 새로운 프로 세 스 를 만 들 고 주 스 크 립 트 의 환경 변수 와 성명 변 수 를 계승 합 니 다.실행 이 끝 난 후 메 인 스 크 립 트 는 환경 변수 와 성명 변 수 를 유지 하지 않 습 니 다.
결론: 이렇게 보면 포크 가 가장 유연 하고 source 가 그 다음 이 고 exec 가 가장 기괴 하 다.
어떤 사용자 가 사용 하 는 셸 로그 인 을 볼 지:
1.echo $SHELL #현재 로그 인 한 사용자 가 사용 하 는 셸 2. grep username/etc/passwd 를 마지막 으로 봅 니 다. #알 고 싶 은 사용자 로그 인 에 사용 할 셸 보기
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
sort 명령: 파일 정렬sort 명령 은 File 매개 변수 가 지정 한 파일 의 줄 을 정렬 하고 결 과 를 표준 출력 에 기록 합 니 다.File 매개 변수 가 여러 파일 을 지정 하면 sort 명령 은 이 파일 들 을 연결 하고 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.