문제

저희의 다른*유닉스 기반 시스템의 년 그것의 모든 맛 Bash 내가 사용하는 다른 알고리즘을 결정하기 위한 시작하는 스크립트를 실행합니다.의 목적을 위해 작업 환경을 설정 변수와의 별칭 및 인쇄 시작 메시지(예를들면MOTDs),시작하는 스크립트가 적절한 장소하니까?

의 차이점은 무엇 것을 두기에 .bashrc, .bash_profile, 고 .environment?나는 또한 본과 같은 다른 파일 .login, .bash_login, 고 .profile;이들은 이제까지가 관련이 있을까요?의 차이점이 무엇인지에 어느 것을 얻을 실행하면 로그인 육체적으로,로그인을 통해 원격으로 ssh,그리고 새로운 터미널 창?이 있는 중요한 차이점을 통해 플랫폼(를 포함하여 Mac OS X(및 터미널도 있습니다.응용 프로그램)및 Cygwin Bash)?

도움이 되었습니까?

해결책

쉘 구성 파일의 주요 차이점은 일부는 "로그인"쉘 (예 : 다른 호스트에서 로그인하거나 로컬 UNIX 머신의 텍스트 콘솔에서 로그인 할 때) 만 읽는 것입니다. 이것들은 .login 또는 .profile 또는 .zlogin (사용중인 쉘에 따라 다름).

그런 다음 "대화식"쉘 (Interactive) 쉘 (Interactive)에 의해 읽은 구성 파일 (또는 터미널에 연결된 것과 같이 (또는 윈도우 시스템에서 실행되는 터미널 에뮬레이터)의 경우 이름이있는 파일이 있습니다. 처럼 .bashrc, .tcshrc, .zshrc, 등.

bash 그것에 이것을 복잡하게 만듭니다 .bashrc ~이다 둘 다인 껍질로만 읽으십시오 인터렉티브 그리고 로그 인, 그래서 당신은 대부분의 사람들이 그들의 말을 알게 될 것입니다 .bash_profile 또한 읽으려면 .bashrc 같은 것

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

다른 껍질은 다르게 행동합니다 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 매뉴얼의 장. 그것은 말한다 "다음 단락은 Bash가 시작 파일을 실행하는 방법을 설명합니다.", 나는 그것이 스팟 온이라고 생각합니다 :) 그것은 "대화식"쉘이 무엇인지 설명합니다.

Bash는 알지 못합니다 .environment. 나는 그것이 당신이 운전하는 쉘과 독립적 인 환경 변수를 설정하기 위해 분포의 파일이라고 생각합니다.

고전적으로, ~/.profile Bourne Shell에서 사용하며 Bash가 유산 측정으로 지원할 수 있습니다. 다시, ~/.login 그리고 ~/.cshrc C Shell에서 사용했습니다 - Bash가 전혀 사용하는지 확실하지 않습니다.

그만큼 ~/.bash_profile 로그인시 한 번 사용됩니다. 그만큼 ~/.bashrc 스크립트는 쉘이 시작될 때마다 읽습니다. 이것은 유사합니다 /.cshrc C 쉘의 경우.

한 가지 결과는 그 물건입니다 ~/.bashrc 로그인이 아닌 쉘을 시작할 때 오버 헤드를 줄이기 위해 가능한 한 가벼운 (최소)이어야합니다.

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

내가 찾는 정보에 대해입니다.bashrc 다.bash_profile 다음과 같이 요약할 수 있습니다:

.bash_profile 실행할 때 로그인합니다.물건을 거기에 넣어 수 당신의 경로와 기타 중요한 환경 변수입니다.

.bashrc 사용을 위한 비 로그인합니다.나는 확실하지 않는 것은 그것이 의미하는 것입니다.알 는 RedHat 실행하는 그것을 할 때마다 당신이 시작 다른 쉘(스와 이용자 또는 단순히 부르 bash 시)할 를 넣어 원하는 별칭에서 있지만이 다시 나는 확실하지 않는 것은 그것이 의미하는 것입니다.나 단순히 무시합니다.

.프로필이 동의 .bash_profile 위해 루트입니다.나는 생각한 이름을 변경 다른 껍질(csh,sh,tcsh)뿐만 아니라 그것을 사용.(당신이 필요가 없는 한 사용자로)

도 있다.wich bash_logout 실행하기에,네 좋은 생각...로그아웃.당신을 중지 할 수 있습는 데몬 또는도 작은 객실 정돈 서비스.수 또한 추가"취소"거기서 하려는 경우 명확한 화면 로그인 할 때다.

또한 전체에 따라 각각의 구성 파일

이들은 아마도 배포판.-따라 모든 배포판을 선택하는 각 configuraton 그들과 함께 몇 가지가 있습니다.하지만 그들이 동일한 이름이,그들은 보통은 동일한 콘텐츠입니다.

에 따르면 조쉬 스타이거, Mac OS X의 터미널 .App은 실제로 각 새로운 터미널 창에 대해 기본적으로 로그인이 아닌 쉘 대신 로그인 쉘을 실행하여 .bashrc 대신 .bash_profile을 호출합니다.

그는 추천합니다 :

대부분의 경우 로그인 및 비 로그 인 쉘에 대해 두 개의 별도 구성 파일을 유지하고 싶지 않습니다. 경로를 설정하면 두 가지 모두에 적용하려고합니다. .bash_profile 파일에서 .bashrc를 소싱 한 다음 .bashrc에 경로와 공통 설정을 넣음으로써이를 해결할 수 있습니다.

이렇게하려면 다음 줄을 .bash_profile에 추가하십시오.

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

이제 콘솔에서 컴퓨터에 로그인하면 .bashrc가 호출됩니다.

볼 수있는 좋은 곳은 Bash의 남자 페이지입니다. 여기온라인 버전입니다. "호출"섹션을 찾으십시오.

나는 실행되는 것처럼 보이는 데비안 가족 배포판을 사용했습니다 .profile, 하지만 .bash_profileRhel 유도체는 실행되는 반면 .bash_profile ~ 전에 .profile.

Linux OS에서 작동하기 위해 환경 변수를 설정해야 할 때 혼란스러운 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top