VNC 데스크톱에 로그인하고 터미널을 열면 HOME bashrc 파일만 호출되어 실행되지만 원격 SSH에 로그인하면 HOME bashrc/bash 구성 파일을 호출하고 LDAP bashrc도 호출합니다. 및 bash 구성 파일.
쉘을 시작할 때 왜 다르게 동작합니까?
답변1
bash
세 가지 쉘 상태를 인식합니다.
- 로그인 셸 - 예를 들어 서버에 로그인하여 직접 호출되는 셸 인스턴스입니다. SSH 또는 텍스트 콘솔
- 대화형 셸 - 명령을 입력할 수 있는 모든 셸입니다. 쉘은 그래픽 터미널에서 시작됩니다. 로그인 쉘은 (보통) 대화형 쉘이기도 합니다.
- 비대화형 셸 - 일반적으로 다른 프로그램이나 명령을 실행하기 위해 프로그램 내에서 호출되는 셸입니다. 이름에서 알 수 있듯이 비대화형 셸에서는 사용자와 상호 작용이 없습니다. 예를 들어 ssh를 사용하여 원격 시스템에서 단일 명령(예:
ssh host.domain ls -l /etc
)만 실행하는 경우 원격 시스템에서 비대화형 셸을 암시적으로 호출하여 명령을 실행한 다음 종료됩니다.
시작 파일 작동 방식:
- ㅏ로그인 쉘
/etc/profile
(모든 사용자를 위한 전역 파일인) 에서 명령을 실행한 다음 해당 파일을 찾 거나.bash_profile
, 개별 사용자의 홈 디렉터리를 순서대로 살펴보고 먼저 발견된 파일에서 명령을 실행합니다. 일반적으로 새로 생성된 계정에는 기본적으로 이 파일만 존재하며 기본적으로 파일 내용을 실행하는 명령도 포함되어 있습니다 . 그러나 파일에서 실행하려는 코드를 제거 하거나 필수 명령을 사용하여 다른 두 파일 중 하나를 생성하면 실행되지 않습니다..bash_login
.profile
.profile
.bashrc
.bashrc
.profile
.profile
- 하나인터렉티브(하지만로그인하지 않았습니다) 쉘은
/etc/bash.bashrc
(모든 사용자에 대한 전역) 명령을 실행한 다음.bashrc
개별 사용자의 홈 디렉토리에 있는 파일 에서 명령을 실행합니다. - 비대화형껍질이 시작된다현지의(즉, 프로그램 내에서 또는
bash
터미널 창에 입력하여) 이러한 파일을 실행하지 마십시오 - 비대화형껍질이 시작된다웹에서(예를 들어 위의 예에서는 ssh를 통해 원격 시스템에서 명령을 실행하고 있습니다.)
.bashrc
사용자의 홈 디렉터리에 있는 파일에서만 명령을 실행합니다. 그러나 기본.bashrc
파일에는 일반적으로 셸이 비대화형인 경우 추가 실행을 중지하는 코드가 시작 부분에 포함되어 있습니다.
상황에 약간의 미묘함이 있지만 기본적으로 모든 것이 위의 방식으로 작동합니다.
VNC를 통해 연결하고 터미널을 열면 로그인이 아닌 대화형 셸이 실행됩니다. SSH를 통해 로그인하면 로그인 쉘이 실행됩니다. 그래서 차이가 있습니다.