UNIX/Linux 시스템에 로그인할 때 어떤 구성 파일 스크립트가 실행됩니까?

UNIX/Linux 시스템에 로그인할 때 어떤 구성 파일 스크립트가 실행됩니까?

UNIX/Linux 시스템에 로그인할 때 어떤 구성 파일 스크립트가 실행됩니까?

일반적으로 $PATH 변수와 사용자 환경의 다른 측면을 설정하는 여러 가지 구성 파일 스크립트가 있습니다. 그러나 내가 본 대부분의 사용자는 CSH용 .cshrc, bash용 .bashrc, ksh용 kshrc 등을 가지고 있습니다.

로그인 시 모두 실행되나요? 사용자의 기본 쉘을 기반으로 합니까? 로그인 스크립트 메커니즘은 어떻게 작동합니까?

예를 들어 su를 사용할 때 어떤 스크립트가 실행되나요?

답변1

그것은 모두 시작되는 쉘에 달려 있습니다.

각 쉘의 매뉴얼 페이지에는 로그인 또는 로그아웃 시 쉘이 실행하는 스크립트와 순서를 설명하는 장이 있습니다. 장의 제목은 다음과 같을 수 있습니다.시작 및 종료( man tcsh) 또는부르다( man bash, man zsh).

실행되는 스크립트는 쉘이 실행되는지 여부에 따라 달라질 수 있습니다.로그인 쉘여부 및/또는 쉘이 다음에서 시작되었는지 여부대화형 모드아니면.

이는 불필요한 작업 중복을 방지합니다. 예를 들어, 다른 프로그램의 "쉘로 탈출" 기능을 통해 실행되는 쉘은 환경 변수 설정이나 기타 상속 가능한 설정을 다시 실행할 필요가 없습니다. 이미 상위 프로세스에서 상속되어 최종적으로 획득되었을 수 있기 때문입니다. 로그인 쉘에서.

마찬가지로, 비대화형 쉘은 출력을 생성하는 모든 초기화 프로세스를 건너뛸 수 있습니다(그리고 그래야 합니다!). 쉘의 출력(및 시작 시 제공되는 명령줄)이 다른 프로그램에 의해 처리될 수 있기 때문입니다. 이 경우 "인간 친화적인" 출력은 쓸모가 없으며 의도한 처리에 해로울 수도 있습니다.

실행되는 특정 상황에서 su -su명령은 루트로 텍스트 모드 로그인과 일치하도록 환경을 완전히 다시 초기화한 다음 root실제 로그인인 것처럼 "로그인 쉘 모드"에서 사용자에 대한 기본 쉘을 실행 합니다. . 옵션이 사용되지 않으므로 -c쉘은 대화형입니다. 거의 모든 경우에 셸은 POSIX와 호환되거나 /bin/sh타사 패키지에 대한 시작 스크립트 호환성을 최대화하는 것과 동일합니다.

(일반적으로 루트의 쉘을 운영 체제의 공장 기본값이나 다른 것으로 변경하는 것은 좋지 않은 생각입니다 /bin/sh. 일부 초기 시작 스크립트는 예상대로 정확하게 작동하기 위해 쉘에 의존할 수 있습니다.)

로그인 셸로 시작되면 POSIX sh호환 셸은 일반적으로 시스템 전체 기본 로그인 스크립트를 먼저 실행 /etc/profile한 다음 사용자별 로그인 스크립트 ~/.profile(있는 경우)를 실행합니다.

관련 정보