Поскольку .bashrc
является более «универсальным» (в том смысле, что .profile
его получает), почему процедура «включить ~/bin
в путь» не находится внутри .bashrc
? Почему бы пользователю не захотеть его в оболочке без входа в систему? (Особенно в наши дни, когда оболочки без регистрации более распространены *.)
Я знаю, что могу сделать такое изменение вручную, но я хочу знать, есть ли причина.
* не могу доказать это, но я думаю, что это так.
~/.bashrc
и /etc/bash.bashrc
выполняются каждый раз интерактивное bash
оболочка запускается.
Напротив, ~/.profile
и /etc/profile
выполняются каждый раз, когда любая оболочка входа в систему запускается. Таким образом, это не должен быть a bash
оболочка, но это действительно должна быть оболочка входа в систему (и многие bash
экземпляры оболочки не являются оболочками входа в систему).
bash
оболочка является оболочкой, где программная оболочка, которая обеспечивает ее, bash
, вместо некоторой другой программы, такой как dash
.Поэтому помещая рекомендование, которое добавляет записи в PATH
в a bashrc
файл был бы:
Ничего не сделайте, когда оболочка не будет bash
, который часто имеет место. Например, PATH
был бы не изменен, когда Вы находитесь на графической сессии входа в систему.Помните, PATH
только используется программами командной строки.
Добавьте его много раз в присутствии вложенного bash
оболочки. Так, при запуске оболочки в оболочке - который очень распространен по ряду причин - затем у Вас будут несколько ~/bin
записи, сложенные на Ваш PATH
. Это делает PATH
переменная среды, трудная читать, и иногда также, уменьшает производительность.
Они были бы нежелательным. Таким образом было бы неправильно поместить это в a bashrc
файл; это действительно принадлежит ~/.profile
. ~/.profile
правильное место для:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Оболочки невхода в систему имеют оболочки входа в систему (или что-то, что ведет себя как оболочка входа в систему) как их родитель, и наследуйте большинство их переменных среды, включая PATH
, от этой оболочки входа в систему. Так вставление изменяющих путь команд ~/.profile
требует, чтобы Вы вышли из системы и въехали задним ходом, чтобы они были эффективными, но это влияет на среду оболочек невхода в систему также (а также среда для программ, которые не являются оболочками, так как каждая программа добирается, ее собственный набор переменных среды - назвал ее "среду" - наследованной от ее родительского процесса).
Это потому, что традиционно переменные среды идут только в /etc/profile
или .profile
. Файл bashrc
предназначен для таких вещей, как псевдонимы, настройки приглашений, параметры оболочки и т. Д. (Т. Е. Вещи, которые непосредственно связаны с оболочкой).