나는 수년간 여러 가지 * nix 기반 시스템을 사용해 왔으며 사용하는 모든 Bash 풍미에는 실행할 시작 스크립트를 결정하는 알고리즘이 다른 것 같습니다. 환경 변수 및 별명 설정 및 시작 메시지 (예 : MOTD) 인쇄와 같은 작업의 목적으로 어떤 시작 스크립트가 적절한 장소입니까?
어떤 물건을 넣어의 차이입니다 .bashrc
, .bash_profile
그리고 .environment
? 나는 또한 같은 다른 파일 본 것 .login
, .bash_login
등을 .profile
; 이것들은 관련이 있습니까? 물리적으로 로그인하고 ssh를 통해 원격으로 로그인하고 새 터미널 창을 열 때 차이점은 무엇입니까? 플랫폼 (Mac OS X (및 Terminal.app) 및 Cygwin Bash 포함)간에 중요한 차이점이 있습니까?
답변
쉘 구성 파일과의 주요 차이점은 일부는 “로그인”쉘만 읽습니다 (예 : 다른 호스트에서 로그인하거나 로컬 UNIX 시스템의 텍스트 콘솔에서 로그인 할 때). 이들은 사용하고있는 쉘에 따라 말 .login
하거나 .profile
또는 말하는 것 .zlogin
입니다.
그런 다음 “대화식”셸에서 읽은 구성 파일이 있습니다 (터미널에 연결된 파일 (예 : 윈도우 시스템에서 실행되는 터미널 에뮬레이터의 경우 의사 터미널)). 같은 .bashrc
, .tcshrc
, .zshrc
, 등
bash
점에서이 복잡하게 .bashrc
됩니다 만 모두의 쉘 읽을 대화 형 및 비 로그인 당신은 대부분의 사람들이 자신의 이야기 결국 찾을 수 있도록, .bash_profile
또한 읽기 .bashrc
와 같은 뭔가
[[ -r ~/.bashrc ]] && . ~/.bashrc
다른 쉘은 다르게 동작합니다 (예 : with zsh
) .zshrc
는 로그인 여부에 관계없이 항상 대화식 쉘에 대해 읽습니다.
bash 매뉴얼 페이지는 각 파일을 읽는 환경을 설명합니다. 예, 일반적으로 시스템간에 동작이 일관됩니다.
.profile
단순히로 사용되는 로그인 스크립트 파일 이름 /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
설명서 의 장을 읽으십시오 . 그것은 말한다 “다음 단락은 떠들썩한 파티가 시작 파일을 실행하는 방법에 대해 설명합니다.” , 나는 그것이 spot-on이라고 생각합니다 🙂 그것은 “대화식”쉘이 무엇인지 설명합니다.
배쉬는 모른다 .environment
. 드라이브의 쉘과 독립적으로 환경 변수를 설정하기 위해 배포판 파일이라고 생각합니다.
답변
기본적 ~/.profile
으로 Bourne Shell에서 사용되며 아마도 Bash에서 레거시 측정으로 지원 될 수 있습니다. 다시 말하지만, ~/.login
및 ~/.cshrc
C 쉘에 의해 사용되었다 – 난 확실하지 배쉬 모두에 그들을 사용.
는 ~/.bash_profile
로그인 할 때, 한 번 사용됩니다. ~/.bashrc
스크립트는 쉘이 시작될 때마다 읽을 수있다. 이것은 /.cshrc
C 쉘 과 유사합니다 .
하나 개의 결과는에 그 물건 ~/.bashrc
비 로그인 쉘을 시작할 때 오버 헤드를 줄이기 위해 가능한 경량 (최소)로해야합니다.
~/.environment
파일이 Korn Shell과 호환되는 파일 이라고 생각합니다 .
답변
.bashrc 및 .bash_profile에 대한 정보를 여기 에서 찾았 습니다.
.bash_profile은 로그인 할 때 실행됩니다. 거기에 넣은 것들이 PATH 및 기타 중요한 환경 변수 일 수 있습니다.
.bashrc는 비 로그인 쉘에 사용됩니다. 그게 무슨 뜻인지 잘 모르겠습니다. RedHat은 다른 쉘을 시작할 때마다 (이 사용자의 경우 또는 단순히 bash를 다시 호출 할 때마다) RedHat이 실행한다는 것을 알고 있습니다. 거기에 별칭을 넣을 수도 있지만 다시 그 의미를 잘 모르겠습니다. 나는 그것을 스스로 무시한다.
.profile은 루트의 .bash_profile과 같습니다. 다른 쉘 (csh, sh, tcsh)도 사용할 수 있도록 이름이 변경되었다고 생각합니다. (사용자로서 필요하지 않습니다)
또한 .bash_logout이 실행됩니다. 예, 좋은 추측 … logout. 당신은 deamons를 중지하거나 심지어 작은 청소를 할 수 있습니다. 로그 아웃 할 때 화면을 지우려면 “클리어”를 추가 할 수도 있습니다.
또한 각 구성 파일에 대한 완전한 후속 조치가 있습니다.
이것들은 아마도 배포판에 따라 다를 수 있습니다. 모든 배포판이 각각의 구성을 갖도록 선택하는 것은 아니며 일부는 더 많이 있습니다. 그러나 이름이 같으면 보통 같은 내용을 포함합니다.
답변
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의 맨 페이지입니다. 여기에 ‘온라인 버전이야. “INVOCATION”섹션을 찾으십시오.
답변
나는 RHEL 파생물이 전에 실행되는 반면 실행 .profile
되지 .bash_profile
는 않지만 Debian-family 배포판을 사용했습니다 ..bash_profile
.profile
Linux OS에서 작동하도록 환경 변수를 설정해야 할 때 혼란스러워 보입니다.