>기술 주변기기 >IT산업 >*NIX 로그인 스크립트 이해

*NIX 로그인 스크립트 이해

Lisa Kudrow
Lisa Kudrow원래의
2025-02-19 12:30:12574검색

Understanding *NIX Login Scripts

*NIX 로그인 스크립트 이해 키 테이크 아웃

로그인하는 동안 모든 쉘에서 읽는 /etc /프로파일 스크립트는 $ 경로와 $ ps1을 설정하고 /etc/bash.bashrc. 개별 배쉬 사용자 계정은 파일 중 하나를 생성 할 수 있습니다 ~/.bash_profile, ~/.bash_login 또는 ~/.profile을 소스로 만들 수 있습니다. Bash는 로그인 쉘이 아닌 대화식 쉘로 시작했을 때 /etc/bash.bashrc 및 ~/.bashrc를 모두 읽을 수 있지만 Debian은/etc/profile 및 ~/.profile Login Scripts에서 이러한 파일을 소스로 표시합니다. 각각.

시스템 전체의 환경 변수의 경우 /etc/profile.d/somefile.sh의 경우 좋은 내기이며, 이동할 수있는 개인 디렉토리 위치의 경우 .profile 또는 .bashrc가 사용될 수 있습니다. 효율성 및 세션 유연성.
  • 환경 변수를 설정하거나 쉘 또는 데스크탑 환경을 변경하기 위해 프로그램을 실행 해야하는 시나리오에 직면 한 적이 있습니까? 이것은 일반적인 상황입니다. 많은 작업에는 데비안 포장 유틸리티 실행에서 IAA 관리 및 그 사이의 모든 내용에 이르기까지 환경 변수가 올바르게 작동해야합니다.
  • 때때로 프로그램은 일반적으로 Xrandr 명령과 같이 처음 로그인 할 때만 한 번만 실행하면됩니다. 또한 프로그램은 때때로 RBENV, RVM 또는 SitePoint의 자체 Envswitch 유틸리티와 같은 쉘에 주입 될 것으로 예상됩니다. 이 설정은 어디서나로드되어서는 안됩니다. 때로는 최고의 장소에 대한 판단을하기 전에 고려해야 할 여러 가지 요인이 있습니다.
  • Debian GNU/Linux Jessie 설치에 존재하는 몇 가지 일반적인 옵션을 살펴보고 모든 것을 이해하려고 노력하십시오.
  • . /etc/프로파일 기본적으로 Debian은 /etc /profile을 제공하며, 즉시 $ 경로를 설정하는 데 사용됩니다 (명령 검색 경로를 선언하는 데 사용).
  • 편의를 위해 루트 사용자 (사용자 ID 0)는 다른 모든 사람에게 정의 된 다른 경로를 가져옵니다. SBIN (System Binary) 위치는 시스템 관리 또는 루트로 실행 해야하는 프로그램에 이상적으로 예약되어 있기 때문입니다. 절대적으로 필요한 경우가 아니라면 Root에 대해서는 게임 경로가 루트에 대해 생략됩니다. 다음으로 /etc /프로파일은 $ ps1의 설정을 처리하며, 이는 기본 프롬프트 문자열을 설정하는 데 사용됩니다. 정의 된 기본값은 쉘이 강타하지 않는 한 '$'(또는 루트의 경우 '#')입니다. 쉘이 bash 인 경우, /etc/bash.bashrc는 대신 (무엇보다도) 처리 할 수 ​​있습니다. 우리는 곧 /etc/bash.bashrc에 대해 이야기 할 것입니다이 시점에서 우리는 /etc /프로파일이 로그인 중 모든 쉘 (즉, 로그인 명령)에 의해 읽는 것을 추론 할 수 있습니다. 보다 효율적인 bash 내장 변수 $ {UID}를 사용하여 사용자 ID를 결정하는 대신 /etc /profile은 대신 id 명령을 호출합니다. Bash는 멋진 쉘 프롬프트를 정의하는 대신 BASH 별 구성이 공급되었습니다. Bash는 다른 많은 쉘이없는 U (Username) 및 H (Hostname)와 같은 백 슬래시 에스케이프 특수 문자를 지원하기 때문입니다. /etc/프로필은 사용자가 스스로 설치할 수있는 쉘과 호환되도록 posix를 준수해야합니다. Debian GNU/Linux에는 종종 대시가 사전 설치되어 있으며, 이는 Posix (및 일부 버클리) 확장을 구현하는 것을 목표로하는 기본 쉘입니다. ps1 = '$'줄에 다른 값을 설정하고 대시 로그인을 시뮬레이션하도록 /etc /profile (백업을 먼저 만들기)을 수정하면 (Dash -L 명령을 통해) 대시를 정의한 프롬프트를 사용하는 것을 볼 수 있습니다. . 그러나 대신 -L 인수없이 Dash 명령을 호출하면 /etc /profile을 읽지 않고 Dash는 기본값으로 돌아갑니다 (우연히 원래 PS1 값이 수정하기 전에 원래 PS1 값이 무엇인지). /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 로그인 스크립트를 만드는 방법

닉스 로그인 생성 스크립트에는 사용자가 로그인 할 때 실행되는 쉘 스크립트를 작성하는 것이 포함됩니다.이 스크립트는 일반적으로 사용자의 홈 디렉토리에 배치되며 .nix-profile이라는 이름이 지정됩니다. 스크립트에는 환경 변수 설정 또는 서비스 시작과 같은 로그인시 실행할 명령이 포함될 수 있습니다. 스크립트가 생성되면 CHMOD x .nix-profile 명령을 실행하여 실행 가능하게 만들 수 있습니다.

Nix 로그인 스크립트를 디버그하는 방법?

닉스 로그인 스크립트 디버그 할 수 있습니다. 스크립트의 시작 부분에서 SET -X를 추가하여 수행합니다. 이로 인해 쉘이 실행되기 전에 각 명령이 인쇄되므로 오류 또는 예기치 않은 동작을 식별하는 데 도움이됩니다. 스크립트가 오류없이 실행 중이지만 예상 결과를 생성하지 않는 경우 스크립트 전체에 Echo 문을 추가하여 변수 또는 기타 정보를 인쇄하는 데 도움이되는 기타 정보를 인쇄 할 수 있습니다. 패키지를 관리하기위한 닉스 로그인 스크립트?

예, 닉스 로그인 스크립트를 사용하여 패키지를 관리 할 수 ​​있습니다. Nix에는 일관되고 재현 가능한 방식으로 패키지를 설치, 업그레이드 및 제거 할 수있는 강력한 패키지 관리 시스템이 있습니다. 닉스 로그인 스크립트를 사용하여 로그인 할 때마다 패키지를 자동으로 설치하거나 업데이트 할 수 있으므로 환경이 항상 필요한 최신 버전의 소프트웨어를 갖도록하십시오. Nix 로그인 스크립트를 사용하여 환경 변수를 설정하는 방법?

Nix 로그인 스크립트에서 환경 변수 설정은 내보내기 varname = value와 같은 줄을 스크립트에 추가하는 것만 큼 간단합니다. 로그인 세션 기간 동안 Environment Variable Varname을 값 값으로 설정합니다. 내보내기 명령을 사용하여 변수를 하위 프로세스에 사용할 수 있도록 할 수도 있습니다. 예를 들어, 내보내기 경로 = $ path :/path/to/dir는 경로 환경 변수에/path//dir를 추가하여 전체 경로를 지정할 필요없이 해당 디렉토리에서 실행 파일을 만듭니다. Nix 로그인 스크립트를 사용하여 서비스를 실행합니까?

예, Nix 로그인 스크립트를 사용하여 서비스를 시작할 수 있습니다. 이것은 원하는 서비스를 시작하는 스크립트에 명령을 추가하여 수행 할 수 있습니다. 예를 들어, SystemCTL Wart ServiceName과 같은 줄을 추가하여 SystemD 서비스를 시작할 수 있습니다. 서비스를 시작하려면 적절한 권한이 필요하므로 Sudo 또는 루트로 스크립트를 실행해야 할 수도 있습니다.

로그인시 Nix 로그인 스크립트를 자동으로 실행하는 방법?

. 로그인시 Nix 로그인 스크립트를 자동으로 실행하려면 쉘의 시작 파일의 적절한 위치에 추가해야합니다. Bash의 경우 일반적으로 홈 디렉토리의 .bash_profile 또는 .bashrc 파일입니다. 새 배쉬 세션을 시작할 때마다 닉스 로그인 스크립트를 실행하려면 소스 ~/.nix-profile과 같은 줄을 추가 할 수 있습니다.

닉스 로그인 스크립트를 사용하여 쉘 프롬프트를 사용자 정의 할 수 있습니까?

예, Nix 로그인 스크립트를 사용하여 쉘 프롬프트를 사용자 정의 할 수 있습니다. 스크립트에서 PS1 환경 변수를 설정하여 수행 할 수 있습니다. 예를 들어, Export ps1 = "u@h : w $"는 사용자 이름, 호스트 이름 및 현재 디렉토리를 표시하라는 프롬프트를 설정합니다.

닉스 로그인 스크립트를 사용하여 경로를 관리하는 방법은 무엇입니까?

닉스 로그인 스크립트로 경로를 관리하려면 경로 환경 변수에 디렉토리를 추가해야합니다. 이것은 내보내기 경로 = $ path :/path/to/dir와 같은 줄로 수행 할 수 있으며,이 경로에/경로//dir를 추가합니다. 이로 인해 전체 경로를 지정할 필요없이 해당 디렉토리의 실행 파일을 사용할 수 있습니다. 콜론으로 분리하는 경로에 많은 디렉토리를 추가 할 수 있습니다.

닉스 로그인 스크립트를 사용하여 작업을 자동화 할 수 있습니까?

예, 닉스 로그인 스크립트는 좋은 방법입니다. 로그인시 수행 해야하는 작업을 자동화하십시오. 여기에는 환경 변수 설정 및 서비스 시작 서비스에서 패키지 설치 및 업데이트 소프트웨어에 이르기까지 모든 것이 포함될 수 있습니다. 이러한 작업을 자동화하면 시간을 절약하고 로그인 할 때마다 일관되게 수행 할 수 있습니다.

위 내용은 *NIX 로그인 스크립트 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:공예 CMS 소개다음 기사:공예 CMS 소개