시스템 전체 $ PATH 변수는 어디에 설정되어 있습니까?


10

Ubuntu Desktop 14.04를 사용하고 있으며 비 로그인 셸을 사용하고 있습니다. GUI 터미널을 열면 먼저 비 로그인 셸 세션에서 다음 시작 파일을 읽습니다.

/etc/bash.bashrc
~/.bashrc

비 로그인 쉘은 로그인 쉘인 상위 프로세스에서 환경을 상속하므로 세션은 다음 시작 파일도 읽습니다.

/etc/profile
~/.bash_profile

그러나, 나는 찾을 수없는 $PATH시스템 전체 경로가 좋아에 대한 /bin, /sbin, /usr/bin, /usr/sbin, 이러한 파일에 설정합니다. $PATH이 디렉토리 의 세트 는 어디에 있습니까 ?

답변:


16

파일 PATH에서 (기본) 시스템 전체 가 설정 /etc/environment됩니다.

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

기본적으로 전역 환경 변수를 저장하는 곳입니다.


+1, 그러나 $PATH그것이 부모 로그인 쉘에 의해 상속되는지 또는 각 bash인스턴스에 의해 다시로드되는지 알고 있습니까?
kos

@kos 모든 자식 프로세스는 물론 수정 된 환경에서 실행되지 않는 한 부모 셸에서 환경을 상속합니다.
heemayl

쉘이 $HOME변수 를 확장하지 않는 것 같습니다 . 예를 들어, in을 추가 $HOME/.composer/vendor/bin하면 이 디렉토리의 바이너리를 경로 접두사없이 실행할 수 없습니다. 사용도 작동하지 않습니다. 절대 경로를 추가해야합니다 (예 :) . 이것은 관련이있는 것 같습니다 (이 동작을 설명하지는 않습니다) : askubuntu.com/questions/402353/…PATH/etc/environment~/.composer/vendor/bin/home/vagrant/.composer/vendor/bin
Ben Johnson

2
그 때문에 단순히이다 @BenJohnson /etc/environment(과 ~/.pam/environment)에 의해 읽어 pam_envPAM 모듈이 아닌 쉘이나 쉘 / 환경 변수를 이해하고 다른 어떤; ~확장도 마찬가지 입니다. 따라서 절대 경로를 사용해야합니다.
heemayl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.