Centos 7의 사용자 로그인 프로세스를 이해하려고 하는데 Gnome 터미널 세션(Gnome 3.14.4)에 대해 환경 변수가 언제/어떻게 정의되는지 알아내려고 할 때 약간 혼란스럽습니다.
내가 아는 한... Gnome Terminal은 /etc/profile, ~/.profile 또는 ~/.bash_profile 스크립트로 내보낸 경우에만 환경 변수를 정의합니다.
내보내지 않으면 set 또는 printenv 명령의 출력에 표시되지 않습니다. /etc/environment 파일은 예외입니다(그러나 쉘 로그인 스크립트는 아닙니다).
내가 찾은 유일한 것은 이 일을 하는 것 같다/etc/X11/xinit/xinitrc-common파일에서 ~/.profile 로그인 스크립트를 소싱할 때...하지만 이는 단지 로그인 스크립트일 뿐이며 /etc/profile 및 ~!/.bash_profile에서 내보낸 변수가 컬렉션에 표시되는 이유를 설명하지 않습니다.
[ -r $HOME/.profile ] && . $HOME/.profile
이것이 ~/.profile 스크립트의 변수를 읽는다면.../etc/profile 및 ~/.bash_profile의 변수를 어떻게 읽습니까? 중요한 경우... "로그인 스크립트로 명령 실행"을 선택하지 않았습니다.
답변1
저는 Gnome Terminal이 기본적으로 bash를 실행한다고 생각합니다(GNU Bourne Again SHell).
실제로 /etc/passwd에서 귀하의 계정에 지정된 모든 쉘을 실행할 수 있습니다.
시작 시 bash는 ~/.profile 및 ~/.bash_profile을 탐색하므로 이러한 변수가 설정됩니다.
요약하자면, Gnome Terminal을 시작하면 쉘이 시작되고 쉘은 이러한 스크립트를 통해 환경 변수를 설정합니다.