Где установлена ​​общесистемная переменная $ PATH?

10

Я использую Ubuntu Desktop 14.04, и поэтому я использую оболочку без регистрации. Когда я открываю терминал с графическим интерфейсом, сначала сеансы оболочки без входа в систему читают следующие файлы запуска:

/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"

Это в основном место для сохранения глобальных переменных среды.

heemayl
источник
+1, однако вы случайно не знаете $PATH, наследуется ли он родительской оболочкой входа или перезагружается каждым bashэкземпляром?
Кос
@kos Все дочерние процессы наследуют среду от родительской оболочки, если, конечно, они не запускаются в измененной среде ..
heemayl
Я заметил, что оболочка, похоже, не расширяет $HOMEпеременную. Например, добавление $HOME/.composer/vendor/binв PATHin /etc/environmentне позволяет выполнять двоичные файлы в этом каталоге без префикса пути. Использование ~/.composer/vendor/binтоже не работает. Я нахожу , что это необходимо , чтобы добавить абсолютный путь, например: /home/vagrant/.composer/vendor/bin. Это кажется связанным (хотя и не объясняет это поведение): askubuntu.com/questions/402353/…
Бен Джонсон
2
@BenJohnson Это просто потому, что /etc/environment~/.pam/environment) читается pam_envмодулем PAM, а не оболочкой или чем-то еще, что понимает переменные оболочки / среды; То же самое касается ~расширения. Итак, вам нужно использовать абсолютный путь там.
Heemayl