질문에 대한 동기는 다음과 같습니다.
Unity 데스크톱과 함께 Ubuntu 12.04 LTS 2를 사용하고 있습니다. .bashrc 파일에서 PATH 변수에 여러 디렉토리를 추가하고 JAVA_HOME과 같은 몇 가지 환경 변수를 정의합니다. 터미널에서 응용 프로그램을 시작하면 (내 기본 셸 실행) 훌륭하게 작동하지만 Unity 런처를 사용하는 여러 바로 가기의 경우 #! / bin / sh를 사용하도록 정의 된 것으로 보이는 앱을 실행합니다. / bin / dash의 별칭이며 ~ / .bashrc 또는 ~ / .profile의 내용을 선택하지 않습니다.
.bashrc 변경 사항을 강제로 적용하기 위해 / bin / sh 대신 / bin / bash를 사용하도록 이러한 모든 단축키를 변경할 수 있다고 가정하지만 실제로는 해키처럼 보입니다.
Ubuntu 12.04 (기본적으로) 별명 / bin / sh가 / bin / dash이고 기본 쉘이 / bin / bash 인 경우 PATH를 수정하고 원하는 경우 환경 변수를 정의 할 수있는 단일 위치가 있습니까? 이러한 모든 상황 에서 존재해야합니다 .
- 비 로그인 bash 쉘을 만들 때마다 (단일 터미널을 사용하여)
- 로그인 bash 쉘을 작성할 때마다 (예 : ssh를 통해 원격으로 로그인)
- Unity 응용 프로그램 실행기를 사용할 때마다 (실행기가 / bin / sh를 사용하는 경우)
- cron 작업이 실행될 때마다 (/ etc / crontab에서 SHELL = / bin / sh가 제공됨).
올바르게 이해하면 다음과 같이 추측됩니다.
- (1) / (2)는 배쉬이고 (3) / (4)는 대시이므로 (1) / (2) 및 (3) / (4)는 다릅니다.
- (1)과 (2)는 bash가로드하기로 선택한 파일이 로그인 쉘인지 여부에 따라 달라지기 때문에 다릅니다.
- (3) 은 로그인 한 후 어느 시점에 오기 때문에 (3)과 (4)는 다릅니다. 따라서 ~ / .profile은 부모 프로세스 중 하나에 의해 제공되고 (4)는 내가 로그인 하지 않았을 때 ~ / .profile을 읽지 못했을 때.
(쉘이 대화 형인지 여부와 같은 다른 요소가 중요하더라도 놀라지 않을 것입니다. 따라서 예상치 못한 조합이 더 많을 것입니다 ... 내 질문이 "개선되어 기쁘다" "의 경우에.)
어느 시점에서 누군가가 쉘과 독립적 인 방식으로 (또는 적어도 대시 / bash 호환 방식으로) 환경 변수를 수정하는 방법 / 위치를 알려주는 일종의 가이드를 만들어야했을 것입니다 ... 그런 가이드를 찾을 수있는 올바른 검색어를 찾지 못하는 것 같습니다.
솔루션 또는 솔루션에 대한 포인터는 대단히 감사합니다!
업데이트 :
- 설명 : 12.04 설치 과정에서 생성 된 기본 Ubuntu 사용자이므로 별다른 문제가 없습니다. 그것은 않습니다 가지고 ~ / .profile에 (즉 명시 적으로 원 ~ / .bashrc에), 유일한 ~ / .bash * 파일의 .bashrc가, .bash_history 파일 및 .bash_logout ... 그래서 더 .bash_profile에 없다 없습니다 제시한다.
- 범위에 대한 강조 : 정말 기본 대화 형 쉘 (bash는)와 (대시 별칭) / bin / sh을 사용한다 일어나는 모든 스크립트 이외의 쉘에 대해 걱정하지 않는다, 그래서 아무것도 가진이 복잡 할 필요가 없습니다 추가 에 대한이 tcsh / ksh / zsh / etc. 지원하다.