linux 에서 셸 명령 을 실행 하 는 방법 안내

3733 단어 linux셸 명령
linux 에서 셸 명령 을 실행 하 는 데 는 두 가지 방법 이 있다
  •  현재 셸 에서 셸 명령 실행
  • 현재 셸 에서 subshell 을 만 들 고 subshell 에서 셸 명령 을 실행 합 니 다
  •  1.현재 셸 에서 셸 명령 실행
    주로 명령 행 에서 대화 방식 으로 셸 명령 을 직접 입력 하고 명령 행 에서 결 과 를 직접 실행 합 니 다.예 를 들 어 다음 과 같 습 니 다.

    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.shbash demo.sh의 차이 이다.
    Liux 의 개발,운영 경험 이 있 는 codeframer 는 어떤 jdk 등 환경 변 수 를 설정 한 적 이 있 는 지 모두 가 기억 할 것 이 라 고 믿 습 니 다.그러면 이 source 는 도대체 무엇 입 니까?먼저 이 문 제 를 놓 아 두 세 요.우리 먼저 아래 를 내 려 다 보 자.아니면 위의 그 demo.sh 의 스 크 립 트 인가.다음은source ~/.bash.rcbash 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 설정 정 보 를 공유 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기