Shell 네 가지 실행 방식(시작 방식)의 구현
우리는 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 실행 방식에 대한 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.