/etc /프로파일에 대해 가장 흥미로운 점은 마지막에 다음 스 니펫입니다.
다시 말해, /etc/profile.d/*.sh glob과 일치하는 읽을 수있는 것은 무엇이든 공급됩니다. /etc /profile을 직접 편집하는 것이 실제로 필요하지 않다는 것을 나타 내기 때문에 이것은 중요합니다 (따라서 이전에 만든 백업을 복원하십시오!). 위에서 정의 된 변수는 별도의 파일에서 재정의 할 수 있습니다. 이를 수행하는 한 가지 이점은 Debian의 APT 패키지 관리 시스템이 일반적으로 수정 된 구성 파일을 터치하지 않기 때문에 시스템 업그레이드가 /etc /프로파일에 자동으로 변경 될 수 있다는 것입니다.
~/.bash_profile, ~/.bash_login 및 ~/.profile
/etc /프로파일의 잠재적 문제 중 하나는 시스템 전체 경로에 있다는 것입니다. 즉, 변경 사항이 시스템의 모든 사용자에게 영향을 미친다는 것을 의미합니다. 개인용 컴퓨터에서는 문제가 많지 않은 것처럼 보일 수 있지만 변경에는 루트 권한이 필요합니다. 이러한 이유로 각 개별 Bash 사용자 계정은 ~/.bash_profile, ~/.bash_login 또는 ~/.profile을 제공 할 수 있으며 첫 번째 파일 (나열된 순서로 검색)을 만들 수 있습니다. 나머지 파일은 무시됩니다. 대시와 같은 다른 껍질은 비슷한 것을 지원하지만 ~/.profile 만 봅니다. 이를 통해 사용자는 배쉬 별 상황에 대해 .bash_profile을 만들 수 있으며, 때때로 로그인 쉘 (예 : Chsh -s Dash 명령)으로 대시 또는 다른 쉘로 전환하는 경우 ~/.profile을 예약 할 수 있습니다. 그 사용 이것의 중요성을 염두에 두어야합니다. 기본 Debian Skeleton 디렉토리 (/etc/skel, 새 사용자 계정 홈 디렉토리에 복사 할 파일 및 디렉토리를 보관하는 데 사용되는 .profile 파일은 포함되지만 .bash_profile 또는 .bash_login 파일은 포함되지 않습니다. 또한 Debian은 Bash를 기본 사용자 쉘로 사용합니다. 따라서 많은 사용자가 Bash 로그인 쉘 설정을 .profile에 넣는 데 익숙합니다.
RVM과 같은 프로젝트에 대한 설치 지침을 보았습니다. 사용자에게 .bash_profile 파일을 만들도록 지시했지만 사용자의 쉘 환경을 깨뜨릴 수 있기 때문에 위험합니다! 사용자가 .profile을 수정하지 않더라도 $ 경로 환경 변수에 ~/bin을 추가하는 기본값 ~/.profile 기능을 활용할 수 있습니다. 이것은 더 이상 작동하지 않습니다. 안전성을 향상시킬 수있는 옵션 중 하나는 사용자 계정을 작성하기 전에 .bash_profile을 /etc /skel에 .bashrc에 Symlink로 추가하는 것입니다.
Debian Jessie의 Default .profile 스크립트를 보면 다음 스 니펫을 볼 수 있습니다.
이것은 /etc /profile에서 본 것과 유사합니다. 여기서 /etc/bash.bashrc는 발견되고 쉘이 강타 인 경우 공급됩니다. 이것의 중요성은 다음 섹션에서 논의됩니다.
/> /etc/bash.bashrc 및 ~/.bashrc
시작했을 때 Bash는 그 순서대로 /etc/bash.bashrc 및 ~/.bashrc를 모두 읽지 만 로그인 쉘이 아닌 대화식 쉘로 시작한 경우에만 (일반적으로 xterm을 통해 시작할 때 의미합니다. ). 이것은 배쉬 쉘의 표준 동작입니다. 그러나 Debian은 각각/etc/profile 및 ~/.profile 로그인 스크립트에서 이러한 파일을 소식합니다. 이것은 /etc/bash.bashrc 및 .bashrc (존재하는 경우)가 로그인 쉘이든 아니든지, bash 쉘이 시작될 때 항상 호출되도록 행동을 효과적으로 변경시킨다. 이 동작이 다른 분포에서 동일하다는 점에 의존하지 마십시오.
.Bashrc는 명령 별칭을 추가하기에 좋은 장소입니다. 실제로 어떤 사람들은 별도의 별명을 가지고있어 별도의 파일에 보관하는 것을 선호합니다. Debian의 기본 .Bashrc는 ~/.bash_aliases를 찾고 파일이 존재하는 경우 소스를 찾으므로 대신 모든 Bash 별칭을 유지하십시오. .BASHRC는 사용자가 원하는 경우 $ ps1 또는 $ histsize (보관할 명령 기록의 양)와 같은 쉘 변수를 무시할 수있는 가장 좋은 장소입니다. Debian의 기본값 .Bashrc의 길이는 100 줄이지만 매우 간단한 독서이며 잘 언급되어 있습니다. 이름에서 알 수 있듯이 .bashrc는 비 배시 쉘에 의해 공급되지 않을 것으로 예상됩니다.
디스플레이 관리자를 통해 로컬로 로그인하는 GNU/Linux 데스크탑 사용자 인 경우 (게티를 통한 로그인 프로그램과 달리),/etc/profile 및 ~/.profile은 작동 할 수 없습니다. 일부 디스플레이 관리자는 그놈 디스플레이 관리자와 같은 이러한 파일을 직접적으로 소스하지만 LightDM과 같은 다른 DM은 그렇지 않습니다. 다행히도 다른 옵션이 있습니다.
X 윈도우 시스템 세션이 시작되면 (가상 터미널에서 디스플레이 관리자 또는 startx를 사용하든 관계없이)/etc/x11/xsession shell 스크립트가 실행됩니다. 이것은 기본적으로 로그인 쉘에서 사용하는 /etc /프로파일과 동일하며 X의 경우에만 공급되지 않고 직접 실행됩니다. 또한 훨씬 더 복잡합니다. /etc/profile.d,/etc/x11/xsession 소스의 스크립트에서/etc/프로파일이 읽는 방법과 유사합니다. 이 디렉토리의 모든 스크립트는 숫자로 시작하므로 스크립트는 번호가 매겨진 순서로로드됩니다.
Debian Jessie에는 40x11-common_xsessionrc라는 파일이 포함되어 있습니다. ~/.xsessionrc가 읽을 수 있는지 확인하고 (그렇다면) 소스를 확인하는 것입니다. 이로 인해 ~/.xsessionrc는 X 세션에만 적용되는 Xrandr 또는 XmodMap과 같은 출시시 환경 변수를로드하거나 한 번만 유틸리티를 실행하기에 완벽한 장소입니다. 이를 사용하여/etc/profile 및 원하는 경우 ~/.profile에 사용할 수 있으므로 지정된 환경 변수는 세션 관리자가 상속받을 수 있습니다 (아직없는 경우). .xsessionrc는 기본적으로 존재하지 않으므로 만들어야합니다. .
/etc/x11/xsession에서 파일을 계속 탐색하면 세션 관리자를 결정하는 50x11-common_determine-startup을 찾을 수 있습니다.
짐. ~/.xsession 파일이 존재하고 실행 가능한 경우, 99x11-common_start의 일부로 나중에 저장 및 실행됩니다. ~/.xsession은 세션 관리자를 실행하기위한 것이므로 X 세션이 로그 아웃 되며이 스크립트가 종료되면 디스플레이 관리자 로그인 화면으로 돌아갑니다.
<.> like ~/.xsessionrc, ~/.xsession은 기본적으로 존재하지 않으므로 원하는 경우 하나를 만들어야합니다. 다음과 같이 보이는 간단한 .xsession 스크립트를 만들 수 있습니다.
여기서 x-session-manager는 업데이트 대행사 명령을 통해 구성된 모든 것에 기본적으로 기본적으로 표시됩니다. 이렇게하면 X-Session-Manager를 say,/usr/bin/startxfce4 (XFCE로 전환하기 위해)로 교체하여 세션 관리자를 시스템 전체의 기본값에서 쉽게 변경할 수 있으며 다른 사용자 계정은 완전히 영향을받지 않습니다. .
물론, 많은 디스플레이 관리자는 로그인 화면에서 직접 공통 세션 관리자를 선택할 수있는 기능을 제공 하므로이 파일이 종종 필요하지 않습니다. 그러나 .xsession은 많은 유연성을 제공하며 세션 관리자뿐만 아니라 여기에서라는 프로그램을 가질 수 있습니다. 예를 들어, 기본 키오스크 모드 설정을 구현하기 위해 대신 Chromium 또는 Iceweasel을 The Where 루프로 호출 할 수 있습니다. ~/.bash_logout
우리는 사용자가 대화식 bash 로그인 쉘을 실행할 때 읽는 파일을 앞에서 다루었지만 로그 아웃 할 때 프로그램을 실행하려면 어떻게해야합니까? 그 유스 케이스의 경우 ~/.bash_logout은 당신의 친구입니다. 데비안에 포함 된 기본값은 화면을 지우는 데만 사용되지만 (보안 관점에서 중요하다고 생각) 다른 목적으로 약간의 상상력이 사용될 수 있습니다. 예를 들어, 몇 초 전에 알림을 표시하기 위해 기계에서 멀리 걸어 가십시오.
주요 제한 요소는 .bash_logout은 대화식 쉘에서 로그 아웃 할 때만 읽히고 X 세션에서 로그 아웃 할 때로드 될 것이라고 가정 할 수 없다는 것입니다.
기타 옵션
그것에 대해 가장 일반적인 옵션을 다루고 있습니다. 설치 (예 : /etc /환경)에 따라 다른 옵션이 존재할 수 있지만, 다른 플랫폼에는 존재할 가능성이 있다고 생각하지 않으며, 그 문제를 만질 필요가 거의 없었습니다. .
예제
시스템 전체의 환경 변수를 어디에 배치해야합니까? 환경 변수가 모든 사용자에게 영향을 미치기를 원한다면 /etc/profile.d/somefile.sh는 좋은 내기입니다. 그러나 이것은 /etc /profile을 소스하는 로그인 관리자를 사용한다고 가정합니다. 그렇지 않은 경우 (관리자로서) /etc/x11/xsession.d/에 스크립트를 추가/etc/profile에 추가 할 수 있습니다.
스크립트에서 개인 디렉토리 위치를 찾고 경로에 추가하려면 디렉토리가 많이 이동하는지 고려해야합니다. .profile에 코드를 추가하면 사용자 세션 중에 디렉토리 변경을 반영하는 경로를 위해 사용자가 로그 아웃해야합니다. 대신 코드를 .bashrc에 추가 한 경우, 사용자가 xterm을 열 때마다 코드가 실행된다는 것을 의미합니다. 이는 실행하는 데 0.5 초 이상 걸리는 경우 이상적이지 않을 수 있습니다. 따라서 트레이드 오프를 평가하는 문제입니다.
개인 로그인 세션에 대해서만 환경 변수를 원한다면 어떻게해야합니까? x 세션에만 관련된 경우 ~/.xsessionrc에 추가 할 수 있습니다. 이는 X 세션 관리자를 시작하기 전에 설정되므로 상속되기 때문에 일반적으로 X 세션 관리자를 통해 출시 된 모든 프로그램에서 사용할 수 있다는 이점이 있습니다. 예를 들어, 일부 그래픽 드라이버는
를 실행하여 vsync 비활성화 될 수 있습니다.
따라서 .xsessionrc에 배치하면 모든 프로그램에 영향을 미칩니다.
그러나 해당 라인이 .bashrc에 추가 된 경우 XTerm을 통해 시작된 프로그램 만 영향을받습니다. Window Manager 런처를 통해 시작된 프로그램은 정상적으로 실행됩니다. .xsessionrc에서 .profile 및 source .profile에 추가 할 수 있지만 X 서버가 실행되지 않더라도 환경 변수를 불필요하게 내 보냅니다. 이제 Debian GNU/Linux 시스템에서 로그인 및 로그 아웃 스크립트가 어떻게 작동하는지 더 잘 이해할 수 있기를 바랍니다. 이 로그인 및 로그 아웃 스크립트에 특히 흥미롭거나 창의적인 용도를 만들거나 만났다면 댓글에 알려주십시오.
이 시리즈에서 다음으로 DotFile 관리 옵션에 대해 논의 할 것입니다.
닉스 로그인 스크립트 에 대한 자주 묻는 질문 (FAQ)
시스템 구성에서 닉스 로그인 스크립트의 중요성은 무엇입니까? Nix 로그인 스크립트는 시스템 구성에 중요한 역할을합니다. 사용자가 NIX 시스템에 로그인 할 때마다 자동으로 실행되는 스크립트입니다. 이 스크립트는 환경 변수 설정, 기능 정의 및 기타 스크립트 실행을 포함하여 사용자의 환경을 설정하는 데 사용됩니다. 이를 통해 다른 세션과 다른 기계에서도 일관되고 재현 가능한 환경이 가능합니다. 또한 로그인시 수행 해야하는 작업을 자동화하고 시간을 절약하고 오류 가능성을 줄이는 방법을 제공합니다.
Nix 로그인 스크립트를 만드는 방법