linux 에서 셸 명령 을 실행 하 는 방법 안내
주로 명령 행 에서 대화 방식 으로 셸 명령 을 직접 입력 하고 명령 행 에서 결 과 를 직접 실행 합 니 다.예 를 들 어 다음 과 같 습 니 다.
2.현재 셸 에서 subshell 을 만 들 고 subshell 에서 셸 명령 을 실행 합 니 다.
예 를 들 어 셸 을 셸 스 크 립 트 로 쓰 는 방식 으로 실행 합 니 다.이 럴 때 현재 셸 대신 subshell 을 시작 한 다음 셸 스 크 립 트 를 실행 합 니 다.예 를 들 어
#demo.sh
#!/bin/bash
read -p "please input your name:" name
echo "hello $name"
chmod +x demo.sh
이 스 크 립 트 기능 은 간단 합 니 다.한 줄 의 말 을 출력 하여 사용자 에 게 자신의 이름 을 입력 하 라 고 알려 주 고 스 크 립 트 는 hello xxx 를 출력 합 니 다.나 는 주로 집행 결과 와 분석 을 말 하고 싶다.먼저 그림 한 장 주세요.
우선 저 는 두 개의 셸 을 시 작 했 습 니 다.이때 쯤 두 개의 셸 의 pid 번 호 는 각각 2473 과 2505 이 고 이 두 프로 세 스 는 모두 프로 세 스 ID 번호 가 2465 인 프로 세 스 에서 fork 로 나 온 하위 프로 세 스 입 니 다.
./demo.sh
을 실행 하면 세 개의 bash 프로 세 스 가 있 습 니 다.프로 세 스 ID 는 각각 2473,2505,2633 입 니 다.그 중에서 2473 과 2505 는 각각 이전 두 개의 셸 에 대응 하 는 프로 세 스 ID 입 니 다.pid 2633 프로 세 스 가 하나 더 나 왔 습 니 다.이 프로 세 스 는 사실 우리 가 말 한 subshell 이다.이 pid 가 2633 인 프로 세 스 의 부모 프로 세 스 번 호 를 보 세 요.즉,pid 가 2473 인 셸 프로 세 스 에서 subshell 을 시작 하 는 것 입 니 다.subshell 의 프로 세 스 ID 번 호 는 2633 입 니 다.warjiang 을 입력 한 후에 스 크 립 트 가 계속 실 행 됩 니 다.실행 이 끝 난 후에 subshell 프로 세 스 가 종 료 됩 니 다.이때 우리 가 프로 세 스 를 다시 보 러 갈 때 pid 가 2633 인 프로 세 스 가 줄 어 든 것 을 발견 할 수 있 습 니 다.즉,앞의 subshell 이 줄 어 든 것 입 니 다.
여기까지 말 하면 현재 터미널 에서 셸 을 실행 하 는 것 과 현재 터미널 에서 subshell 을 시작 하여 셸 을 실행 하 는 두 가지 방식 에 대해 서도 어느 정도 알 고 있 습 니 다.다음은 source 명령 을 터미널 에서 셸 스 크 립 트 를 실행 하 는 것 과 구별 합 니 다.
source 와 bash 의 차이
엄 밀 히 말 하면,나의 이 제목 은 독이 있다.왜냐하면 source 명령 은 원래 bash 의 일부분 에 속 하기 때문이다.내 가 여기 서 말 하고 싶 은 것 은
source demo.sh
과bash demo.sh
의 차이 이다.Liux 의 개발,운영 경험 이 있 는 codeframer 는 어떤 jdk 등 환경 변 수 를 설정 한 적 이 있 는 지 모두 가 기억 할 것 이 라 고 믿 습 니 다.그러면 이 source 는 도대체 무엇 입 니까?먼저 이 문 제 를 놓 아 두 세 요.우리 먼저 아래 를 내 려 다 보 자.아니면 위의 그 demo.sh 의 스 크 립 트 인가.다음은
source ~/.bash.rc
와bash demo.sh( chmod +x demo.sh ./demo.sh)
의 차 이 를 비교 해 보 자.그 중에서 위 에 있 는 한 장의 사진 은 집행
source demo.sh
의 캡 처 이 고 아래 에 있 는 한 장 은./demo.sh
이다.두 장의 그림 을 비교 해 보면 두 장의 그림 의 가장 큰 차이 점 은 위의 그림 에 subshell 이 하나 더 생 겼 다 는 것 이다.즉,pid 가 2633 프로 세 스 의 등장 과 사라 지 는 과정 이다.따라서 셸 스 크 립 트 를 실행 하면 현재 명령 줄 에 키 프로 세 스 가 자동 으로 생 성 됩 니 다.스 크 립 트 를 실행 한 후에 이 하위 프로 세 스 를 자동 으로 닫 습 니 다.그러나 souce 명령 은 새로운 하위 프로 세 스 를 만 들 지 않 고 현재 터미널 프로 세 스에 서 셸 스 크 립 트 를 읽 고 실행 합 니 다.그래서 source 와 bash 의 가장 큰 차이 점 은 source 가 새로운 셸 을 시작 하지 않 고 bash 가 새로운 셸 을 시작 해 야 한 다 는 것 이다.
다시 위
source demo.sh
로 돌아 가면 현재 터미널 에서 실행source ~/.bashrc
하 는 것 과 같 습 니 다.bashrc 파일 의 내용 은 export PATH 부분 에 관 한 문구 입 니 다.즉,PATH 변 수 를 설정 하고 실행~/.bashrc
을 통 해 설 정 된 새로운 환경 변 수 를 PATH 가 이전 터미널 에서 유효 하 게 합 니 다.source 와(.)
이쪽 이면~/.bashaliases 는 일반적으로 alias 의 지속 화 를 사용 하여 사용자 의 alias 기록 을 기록 합 니 다.직관 적 으로 보면 실행
source ~/.bashrc
은 aliases 의 변수 별명 을 설정 해 야 합 니 다.그럼 이. ~/.bash_aliases
는 무엇 입 니까?사실 여기.
는.
와 같은 역할 을 합 니 다.현재 터미널 에서 스 크 립 트 를 실행 하면 현재 터미널 에서 alias 설정 정 보 를 공유 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.