내 모든 로그인 구성을에 집중하고 싶습니다 ~/.bash_profile
. 거기에 있었다 ~/.bashrc
가 기본적으로 그러나 나는 그것을 대체 ~/.bash_profile
.
그러나 로그인 ~/.bash_profile
하면 소스가 나오기 전에 무언가 가 다음과 같이 표시됩니다.
Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
System information as of Fri May 9 12:17:39 EDT 2014
System load: 0.01 Processes: 74
Usage of /: 5.5% of 18.58GB Users logged in: 0
Memory usage: 4% IP address for eth0: 123.x.x.x
Swap usage: 0%
Graph this data and manage this system at https://landscape.canonical.com/
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Fri May 9 12:11:52 2014 from 123.x.x.x
내 Get에 정의 된 내 스플래시 인사말 만 표시되도록 제거하고 ~/.bash_profile
싶지만 사용자가 로그인 할 때 소스 / 실행 된 스크립트의 논리 / 시퀀스에 대해 잘 모르겠습니다.
보너스로, 사용자가 로그인하여 세션을 시작할 때뿐만 아니라 시스템이 시작될 때 자동 소싱 / 실행 순서를 알고 싶습니다. 지금은 중요하지 않습니다.
답변
이것은 복잡한 것입니다. 우선, 세부 사항은 실행중인 쉘의 종류에 따라 다릅니다. 자신 을 표절 하기 :
-
gnome-terminal
예를 들어 터미널 에뮬레이터를 열면 대화 형 비 로그인 셸이 실행됩니다. -
명령 행에서 머신에 로그인 하거나과 같은 명령
su - username
을 실행하면 대화식 로그인 쉘 이 실행 됩니다. -
그래픽으로 로그인하면 완전히 다른 것을 실행하게됩니다. 세부 사항은 시스템 및 그래픽 환경에 따라 다르지만 일반적으로 로그인을 처리하는 것은 그래픽 쉘 입니다. (우분투 기본 포함) 많은 그래픽 쉘은 읽을 수 있지만
/etc/profile
및~/.profile
그 모든는 않습니다. -
마지막으로 쉘 스크립트를 실행할 때 비 대화식 비 로그인 쉘에서 실행 됩니다.
bash가 시작될 때 읽을 파일은 실행중인 쉘의 유형에 따라 다릅니다. 다음은 man bash
(강조 광산) 의 INVOCATION 섹션에서 발췌 한 것입니다 .
bash가 대화식 로그인 쉘 또는 –login 옵션을 사용하는 비 대화식 쉘로 호출 되면 파일이 존재하는 경우 먼저 / etc / profile 파일에서 명령을 읽고 실행 합니다. 해당 파일을 읽은 후 ~ / .bash_profile, ~ / .bash_login 및 ~ / .profile을 순서대로 찾고 존재하고 읽을 수있는 첫 번째 파일에서 명령을 읽고 실행합니다. 이 동작을 막기 위해 쉘을 시작할 때 –noprofile 옵션을 사용할 수 있습니다.
때 대화 형 쉘 입니다 로그인 쉘되지는 시작, bash는 읽기와에서 실행하는 명령을 /etc/bash.bashrc 와 ~ / .bashrc에 이 파일이 존재하는 경우. –norc 옵션을 사용하여이를 방지 할 수 있습니다. –rcfile 파일 옵션은 bash가 /etc/bash.bashrc 및 ~ / .bashrc 대신 파일에서 명령을 읽고 실행하도록합니다.
그것들은 초기화 파일입니다. 또한이 /etc/environment
전역 환경 변수를 설정할 수 있지만 (이 실행하지만 변수 정의가 설정되어 있지 않습니다 내에서 명령) 그의는 공급보다는 읽어 보시기 바랍니다.
자, 당신이 보는 인사는 또 다른 것입니다. 이 설정되어 /etc/motd
를 통해 표시됩니다 pam_motd
. 에 설명 된대로 man motd
:
/ etc / motd의 내용은 로그인 성공 후 로그인 쉘을 실행하기 직전에 pam_motd (8)에 의해 표시됩니다.
약어 “motd”는 “오늘의 메시지”를 나타내며,이 파일은 전통적으로 정확하게 사용되었습니다 (모든 사용자에게 보내는 메일보다 디스크 공간이 훨씬 적게 필요합니다).
데비안 GNU / 리눅스에서는 /run/motd.dynamic의 내용도 표시됩니다. 이 파일은 부팅시 /etc/init.d/motd에 의해 생성됩니다.
메시지를 제거하려면 /etc/motd
파일을 비우고 /etc/init.d/motd
존재 하는 경우 아무것도 생성되지 않는지 확인하십시오 .
어쨌든, 당신이 보여주는 결과에 따라, 당신은 대화 형 로그인 쉘을ssh
실행한다는 것을 통해 로그인하는 것처럼 보입니다 . 이것의 의미는 위를 참조하십시오. 요약하면, 로그인 할 때 관심이있는 것은 다음과 같은 순서로 제공됩니다.
pam_motd
PAM 라이브러리 의 모듈을 통한 SSH 데몬 은의 내용을 표시합니다/etc/motd
.pam_env
모듈을 통해/etc/environment
및 에서 환경 변수를 설정합니다~/.pam_environment
.- 로그인 쉘이 시작되고 다음 파일을 순서대로 읽습니다.
/etc/profile
/etc/bash.bashrc
(기본 우분투/etc/profile
소스/etc/bash.bashrc
).~/.bash_profile
. 여기에서 읽을 수있는 다른 파일 (~/.profile
및~/.bash_login
)은~/.bash_profile
존재 하므로 무시 됩니다.
답변
ssh를 통해 로그인 할 때 표시되는 정보는 / etc / profile을보기 전에 생성됩니다. /etc/update-motd.d의 파일 순서를 살펴보십시오. 보고있는 메시지가 다양한 스크립트에 의해 생성되는 위치를 보여줍니다.