Shell 네 가지 실행 방식(시작 방식)의 구현

3623 단어 Shell실행 방식
셸은 하나의 응용 프로그램으로 한쪽은 Linux 커널과 연결되고, 다른 한쪽은 사용자와 연결된다.Shell은 사용자와 Linux 시스템이 소통하는 다리입니다. 우리는 모두 Shell을 통해 Linux 시스템을 관리합니다.
우리는 Shell을 직접 사용할 수도 있고, 사용자 이름과 비밀번호를 입력한 후에 Shell을 사용할 수도 있다.첫 번째는 비로그인식, 두 번째는 로그인식이라고 한다.
우리는 셸에 명령을 하나씩 입력하고 출력 결과를 제때에 볼 수 있다. 전체 과정은 셸과 끊임없이 상호작용을 하는데 이를 상호작용이라고 한다.셸 스크립트 파일을 실행하여 모든 명령을 일괄적이고 한꺼번에 실행할 수 있습니다. 이를 비상호작용이라고 합니다.
요약하면 Shell에는 다음과 같은 네 가지 운영 방식이 있습니다.
  • 대화형 로그인 셸;
  • 대화식 비로그인 셸;
  • 비대화식 로그인 셸;
  • 비대화식 비로그인 셸..
  • 셸이 대화형인지 여부를 판단합니다.


    대화식 셸인지 아닌지를 판단하는 데는 두 가지 간단한 방법이 있다.
    1) 변수 - 의 값을 보고 알파벳 i가 포함되어 있으면 인터랙티브 (interactive) 를 나타냅니다.
    [예제 1] CentOS GNOME 데스크톱 환경의 자체 터미널에서 출력된 값:
    
    [jb51.net]$ echo $-
    himBH
    
    i를 포함하여 상호작용을 합니다.
    [예제 2] 셸 스크립트 파일에서 출력 - 의 값:
    
    [jb51.net]$ cat test.sh
    #!/bin/bash
    
    echo $-
    [jb51.net]$ bash ./test.sh
    hB
    
    
    i를 포함하지 않습니다. 비 상호작용입니다.새 프로세스에서 셸 스크립트를 실행해야 합니다.
    2) 변수 PS1의 값을 보십시오. 비어 있지 않으면 상호작용, 그렇지 않으면 비상호작용입니다. 왜냐하면 비상호작용은 이 변수를 비우기 때문입니다.
    [예제 1] CentOS GNOME 데스크톱 환경의 자체 터미널에서 PS1 값을 출력합니다.
    
    [mozhiyan@localhost]$ echo $PS1
    [\u@\h \W]\$
    
    비활성, 대화식.
    [예제 2] 셸 스크립트 파일에서 PS1 값을 출력합니다.
    
    [jb51.net]$ cat test.sh
    #!/bin/bash
    
    echo $PS1
    [jb51.net]$ bash ./test.sh
    
    
    빈 값, 비 상호작용입니다.새 프로세스에서 셸 스크립트를 실행해야 합니다.

    셸이 로그인인지 여부를 판단합니다.


    셸이 로그인인지 아닌지를 판단하는 것도 간단합니다. shopt login_셸은 됩니다. 값은 on은 로그인식, off는 비로그인식입니다.
    shopt 명령은 셸의 비헤이비어 옵션을 보거나 설정하는 데 사용되며, 이 옵션들은 셸의 사용성을 향상시킬 수 있습니다.
    [실례1] CentOS GNOME 데스크톱 환경이 있는 단말기에서 login_ 보기셸 옵션:
    
    [jb51.net]$ shopt login_shell
    login_shell  off
    
    
    [실례2] Ctrl+Alt+Fn 조합키를 눌러 가상 단말기로 전환하고 사용자 이름과 비밀번호를 입력하여 로그인한 후login_셸 옵션:
    
    [jb51.net]$ shopt login_shell
    login_shell  on
    [실례 3] 셸 스크립트 파일에서 login_ 보기shel 옵션:
    
    [jb51.net]$ cat test.sh
    #!/bin/bash
    
    shopt login_shell
    [jb51.net]$ bash ./test.sh
    login_shell  off
    
    

    상호작용식, 로그인식을 동시에 판단하다


    대화식과 로그인 여부를 동시에 판단하려면 다음과 같은 명령을 간단히 사용할 수 있습니다.
    
    echo $PS1; shopt login_shell
    
    
    혹은
    
    echo $-; shopt login_shell
    
    

    일반적인 셸 시작 방법


    1) Linux 컨트롤러(데스크톱 환경이 아닌 단말기)나 ssh를 통해 셸에 로그인할 때 (이것이야말로 정상적인 로그인 방식) 상호작용적인 셸에 로그인합니다.
    
    [jb51.net]$ echo $PS1;shopt login_shell
    [\u@\h \W]\$
    login_shell  on
    
    
    2) bash 명령을 실행할 때 기본적으로 비로그인입니다. --login 옵션 (약칭 -l) 을 추가하면 로그인식이 됩니다.
    
    [jb51.net]$ cat test.sh
    #!/bin/bash
    
    echo $-; shopt login_shell
    [jb51.net]$ bash -l ./test.sh
    hB
    login_shell  on
    
    
    3) ()로 둘러싸인 그룹 명령이나 명령을 사용하여 하위 셸에 들어갈 때 하위 셸은 상위 셸의 상호작용과 로그인 속성을 상속합니다.이 피드 프로세스는 fork로 만들어졌을 뿐, exce를 실행하지 않았으며, 프로필을 다시 불러오지 않습니다.
    
    [jb51.net]$ bash
    [jb51.net]$ (echo $PS1;shopt login_shell)
    [\u@\h \W]\$
    login_shell  off
    [jb51.net]$ bash -l
    [jb51.net]$ (echo $PS1;shopt login_shell)
    [\u@\h \W]\$
    login_shell  on
    
    
    4) ssh는 원격 명령을 실행하지만 로그인하지 않을 때 비상호작용 비로그인식입니다.
    
    [jb51.net]$ ssh localhost 'echo $PS1;shopt login_shell'
    
    login_shell   off
    
    
    5) Linux 데스크톱 환경에서 터미널을 열 때 대화식 비로그인 셸입니다.
    데스크톱 환경에서 대화식으로 터미널 비로그인 셸 열기
    Shell의 네 가지 실행 방식(시작 방식)의 실현에 관한 이 글은 여기에 소개되었습니다. 더 많은 Shell 실행 방식에 대한 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기