답변:
전통적으로 유닉스 시스템에서 사용자 별 환경 변수를 정의 할 수있는 곳은 ~/.profile
입니다. 로그인 쉘이 Bourne 호환 쉘인 경우,이 파일은 로그인 쉘 (즉, 로그인 할 때 시작되고 명령을 입력 할 수있는 프로그램)이 읽습니다.
Bash는 Bourne 호환 쉘입니다. ~/.bash_profile
이 파일이 존재하고 존재하지 않는 ~/.profile
경우 , 로그인 쉘이 호출 될 때 읽습니다 ~/.bash_profile
.
일반적으로 텍스트 모드 (예 : 텍스트 콘솔 또는 ssh를 사용하여 원격으로)로 암호를 입력하면 셸이 로그인 셸입니다.
그러나 그래픽 프로그램에 비밀번호를 입력하고 그래픽 환경에 로그인하면 일반 로그인 쉘이 무시됩니다. .profile
이 경우 읽기 여부 는 그래픽 세션 설정 방법에 따라 다릅니다. 예를 들어, Linux 배포판, 디스플레이 관리자 및 데스크탑 환경에 따라 다릅니다. 때때로 체인의 프로그램 중 하나가 로그인 쉘을 명시 적으로 호출합니다. 때로는 프로그램 중 하나가 명시 적으로 읽습니다 ~/.profile
. 때로는이 중 어느 것도 ~/.profile
일어나지 않고 읽히지 않습니다.
Ubuntu 10.04에서 관련 스크립트를 한 눈에 알 수있는 한 가변성의 예를 제공하기 위해 : kdm 또는 lxdm으로 로그인 한 ~/.bash_profile
경우, 존재하는 경우 읽습니다 ~/.profile
. gdm으로 로그인하면 ~/.profile
읽기만 가능합니다. xdm으로 로그인하면 ~/.profile
읽을 수 없습니다.
내가 아는 모든 시스템은 사용자 별 환경 변수를 설정하는 방법을 제공합니다. 불행히도 일반적인 대답은 없습니다.
때때로 환경 변수를 설정 ~/.bashrc
하거나 GUI 환경의 각 터미널에서 로그인 쉘을 시작 하라는 권장 사항이 표시 됩니다. 둘 다 나쁜 생각입니다. 이유 중 하나는 사용자가 경험 한 문제, 즉 환경 변수가 터미널을 통해 시작된 프로그램에서만 사용할 수 있고 아이콘이나 메뉴 또는 키보드 바로 가기로 직접 시작된 프로그램에서는 사용할 수 없기 때문입니다.
.profile
로그인 할 때 읽기에 환경 변수 퍼팅. .bashrc
일을하지 않으며, 시나리오가 설명을한다 : 환경 변수가 있어야이 쉘을 실행하지만 당신이 그들을 정의하는 경우 (아마도 GUI) 응용 프로그램 .bashrc
, 그것은 '아무튼 티.
결정적인 대답은 Bash Startup Files 의 bash 맨 페이지 섹션에 있습니다. "로그인 쉘이 아닌 대화식 쉘이 시작되면 Bash는 해당 파일이 존재하는 경우 ~ / .bashrc에서 명령을 읽고 실행합니다."
다른 질문에 대답하면 eshell이 실제로 실행되지 않는다고 지적합니다 bash
. 이맥스 eshell
는 아닙니다 bash
. 그 가정 eshell
로드 할 것은 .bashrc
가정 한 결함 zsh
또는 csh
로드합니다 .bashrc
. 다른 껍질입니다.
두 가지 옵션이 있습니다.
bash
및 elisp 코드를 생성하는 고유 한 스크립트를 작성하십시오 eshell
.중복없이 경로에 디렉토리를 추가하는 것에 대한 토론에 관심이있을 수도 있습니다 .