programing

.bashrc, .bash_profile 및 .environment의 차이점은 무엇입니까?

lastcode 2023. 7. 1. 08:47
반응형

.bashrc, .bash_profile 및 .environment의 차이점은 무엇입니까?

저는 여러 해 동안 다양한 *nix 기반 시스템을 사용했는데, 제가 사용하는 모든 버전의 Bash에는 실행할 시작 스크립트를 결정하는 알고리즘이 다른 것 같습니다.환경 변수 및 별칭 설정 및 시작 메시지 인쇄(예: MOTD)와 같은 작업의 목적으로 이러한 작업을 수행하는 데 적합한 시작 스크립트는 무엇입니까?

물건을 넣는 것과 무엇이 다릅니까?.bashrc,.bash_profile,그리고..environment다음과 같은 다른 파일도 보았습니다..login,.bash_login,그리고..profile이것들이 관련이 있습니까?물리적으로 로그인하고, ssh를 통해 원격으로 로그인하고, 새로운 터미널 창을 열 때 실행되는 차이점은 무엇입니까?플랫폼(Mac OS X(및 해당 Terminal.app)과 Cygwin Bash 포함) 간에 큰 차이가 있습니까?

셸 구성 파일과의 주요 차이점은 일부는 "로그인" 셸(예: 다른 호스트에서 로그인하거나 로컬 유닉스 시스템의 텍스트 콘솔에서 로그인할 때)에서만 읽힌다는 것입니다.이들은 이렇게 불리는 사람들입니다..login또는.profile또는.zlogin(사용하는 셸에 따라 다릅니다.)

그런 다음 "대화형" 셸(예: 터미널(예: 윈도우 시스템에서 실행되는 터미널 에뮬레이터의 경우 유사 터미널)에 연결된 셸)에 의해 읽는 구성 파일이 있습니다.이런 이름을 가진 사람들입니다..bashrc,.tcshrc,.zshrc 타기.

bash이 점에서 이것을 복잡하게 만듭니다..bashrc상호작용적이고 비반응적 셸에 의해서만 읽히기 때문에, 대부분의 사람들이 결국 그들의 말을 하는 것을 발견할 수 있을 것입니다..bash_profile도 읽다.bashrc 같 와 것 으 로와 같은 것으로

[[ -r ~/.bashrc ]] && . ~/.bashrc

다른 껍질들은 다르게 행동합니다 - 예를 들어zsh,.zshrc로그인 셸인지 여부에 관계없이 대화형 셸에 대해 항상 읽힙니다.

bash 매뉴얼 페이지에서는 각 파일을 읽는 상황을 설명합니다.예, 동작은 일반적으로 기계 간에 일치합니다.

.profile 단히로스파이일름다니입크트립순그인▁script▁▁by▁login에서 원래 사용하던 로그인 파일 이름입니다./bin/sh.bash으로 반적으로하있는이호성환과 ./bin/sh 읽을 입니다..profile있는 경우에 따라

그것은 간단합니다.에설되 있다니습에 설명되어 man bash:

/bin/bash
       The bash executable
/etc/profile
       The systemwide initialization file, executed for login shells
~/.bash_profile
       The personal initialization file, executed for login shells
~/.bashrc
       The individual per-interactive-shell startup file
~/.bash_logout
       The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
       Individual readline initialization file

로그인 셸은 사용자가 로그인할 때 읽히는 셸입니다. 따라서 xterm을 시작할 때만 실행되지 않습니다.로그인할 수 있는 다른 방법이 있습니다.예를 들어 X 표시 관리자를 사용합니다.로그인 시 환경 변수를 읽고 내보낼 수 있는 다른 방법이 있습니다.

자세한 내용은 다음을 참조하십시오.INVOCATION설명서의 장"다음 단락은 bash가 시작 파일을 실행하는 방법을 설명합니다."라고 쓰여 있습니다. 저는 그것이 바로 현장이라고 생각합니다:) 그것은 "대화형" 셸이 무엇인지 설명합니다.

는 Bash에 대해 ..environment저는 그것이 당신이 운전하는 셸과 독립적으로 환경 변수를 설정하기 위한 분포의 파일이라고 생각합니다.

적으로고전,,~/.profileBourne Shell에서 사용하며, Bash에서 레거시 측정값으로 지원할 수 있습니다.다시.~/.login그리고.~/.cshrcC Shell에서 사용했습니다 - Bash가 사용하는지 전혀 모르겠습니다.

~/.bash_profile로그인 시 한 번 사용됩니다.~/.bashrc셸이 시작될 때마다 스크립트가 읽힙니다.은 이다음유사다니합과는과 유사합니다./.cshrcC 쉘용.

가지 는 한가지그것이에 것입니다.~/.bashrc비회전 셸을 시작할 때 오버헤드를 줄이기 위해 가능한 한 경량(슬림)이어야 합니다.

나는 믿습니다.~/.environment파일은 Korn Shell의 호환성 파일입니다.

요약하자면 .bashrc 및 .bash_profile에 대한 정보를 여기에서 찾았습니다.

.vmx_profile은 로그인할 때 실행됩니다.당신이 거기에 넣는 것은 당신의 PATH와 다른 중요한 환경 변수일 수 있습니다.

.svrc는 비로그인 셸에 사용됩니다.그게 무슨 뜻인지 잘 모르겠어요.RedHat은 다른 셸을 시작할 때마다 실행된다는 것을 알고 있습니다(이 사용자에게 su 또는 단순히 bash를 다시 호출함). 거기에 별칭을 넣고 싶을 수도 있지만 다시 말하지만 그게 무슨 뜻인지 잘 모르겠습니다.저는 그냥 제 자신이 무시합니다.

.profile은 루트에 대한 .vmx_profile과 동일합니다.다른 쉘(csh, sh, tcsh)에서도 사용할 수 있도록 이름이 바뀐 것 같습니다.(사용자로서 필요하지 않음)

또한 .bash_logout을 실행하는 것도 있습니다. 예, 좋습니다...로그아웃합니다. 디몬을 멈추거나 집안일을 조금이라도 하고 싶을 수도 있습니다.로그아웃할 때 화면을 지우려면 "지우기"를 추가할 수도 있습니다.

또한 각 구성 파일에 대한 전체 후속 조치가 여기에 있습니다.

이들은 배포자에 따라 다를 수도 있습니다. 모든 배포자가 각 구성을 사용하도록 선택하지는 않으며 일부 배포자는 더 많은 구성을 사용합니다.하지만 그들이 같은 이름을 가지고 있을 때, 그들은 보통 같은 내용을 포함합니다.

Josh Staiger에 따르면 Mac OS X의 Terminal.app은 새 터미널 창마다 기본적으로 로그인 셸이 아닌 로그인 셸을 실행하고 .bashrc 대신 .bash_profile을 호출합니다.

그는 다음을(를 권장합니다.

대부분의 경우 로그인 셸과 비로그인 셸에 대해 두 개의 별도 구성 파일을 유지 관리하지 않습니다. PATH를 설정하면 두 개의 구성 파일이 모두 적용됩니다..bash_profile 파일에서 .bashrc를 찾은 다음 PATH 및 공통 설정을 .bashrc에 넣어 이 문제를 해결할 수 있습니다.

이렇게 하려면 다음 행을 .bash_profile에 추가합니다.

if [ -f ~/.bashrc ]; then 
    source ~/.bashrc 
fi

이제 콘솔에서 시스템에 로그인하면 .bashrc가 호출됩니다.

보기 좋은 곳은 bash의 man 페이지입니다.여기 온라인 버전이 있습니다."INVOCATION" 섹션을 찾습니다.

데비안 패밀리 디스트로를 사용해 왔습니다. 데비안 패밀리 디스트로를 사용했습니다..profile하지만 아닙니다..bash_profile반면에 RHEL 파생물은 실행됩니다..bash_profile전에.profile.

Linux OS에서 작동하도록 환경 변수를 설정해야 할 때는 엉망인 것 같습니다.

언급URL : https://stackoverflow.com/questions/415403/whats-the-difference-between-bashrc-bash-profile-and-environment

반응형