Как я попросил и вложил ответы здесь, и здесь, переменная ПУТИ имеет различные пути в зависимости от того, как приложение активируется.
Традиционно, место для определения переменных среды в расчете на пользователя в системах Unix ~/.profile
. Этот файл читается оболочкой входа в систему (т.е. программа, которая запущена, когда Вы входите в систему, и что можно ввести команды в), при условии, что оболочка входа в систему является Совместимой с границей оболочкой.
Bash является Совместимой с границей оболочкой. Когда это вызывается, поскольку оболочка входа в систему читает ~/.bash_profile
если этот файл существует, и ~/.profile
если ~/.bash_profile
не существует.
Как показывает опыт, при вводе пароля в текстовом режиме (например, на текстовой консоли, или удаленно с ssh), затем оболочка, которую Вы получаете, является оболочкой входа в систему.
Однако, если Вы вводите свой пароль в графической программе и входитесь графическая среда, это обходит нормальную оболочку входа в систему. Ли .profile
читается в этом случае зависит от того, как графическая сессия настраивается; например, это варьируется между дистрибутивами Linux между менеджерами по оформлению и между настольными средами. Иногда одна из программ в цепочке явно вызывает оболочку входа в систему; иногда одна из программ явно читает ~/.profile
; и иногда ни одного из этого не происходит и ~/.profile
не становится считанным.
Для предоставления примера изменчивости, насколько я могу сказать от быстрого взгляда на включенные сценарии на Ubuntu 10.04: если Вы входите в систему с kdm или lxdm, ~/.bash_profile
читается, если это существует, и ~/.profile
иначе; если Вы входите в систему с gdm, только ~/.profile
читается; если Вы входите в систему с xdm, ~/.profile
не читается.
Все системы, которые я знаю, обеспечивают некоторый способ установить переменные среды в расчете на пользователя. К сожалению, нет никакого общего ответа.
Обратите внимание иногда наблюдение рекомендаций любому набору переменные среды в ~/.bashrc
, или запустите оболочку входа в систему в каждом терминале в среде GUI. Оба - плохие идеи; одной из причин является проблема, которую Вы испытали, а именно, что Ваши переменные среды были только доступны в программах, запущенных через терминал, а не в программах, запущенных непосредственно со значком или меню или сочетанием клавиш.
Категорический ответ находится в разделе страницы справочника удара по Файлам Запуска Bash. "Когда интерактивная оболочка, которая не является оболочкой входа в систему, запускается, Bash читает и выполняет команды от ~/.bashrc, если тот файл существует".
Отвечает, что Ваши другие вопросы указывают, что eshell на самом деле не работает bash
. Emacs eshell
не bash
. Принятие этого eshell
загрузился бы .bashrc
является столь же дефектным как принятие zsh
или csh
загрузился бы .bashrc
. Это - другая оболочка.
Я вижу две опции:
bash
и elisp кодируют для eshell
.Вы могли бы также интересоваться обсуждением добавления каталога к пути без дубликатов.
При устанавливании ПУТИ в ~ должен просто работать/.profile. Тот файл читается после входа в систему каждой совместимой POSIX или подобной Границе оболочкой, которую я знаю включения удара. При внесении изменений в тот файл необходимо будет выйти из системы и войти в для изменений для вступления в силу. Так как ПУТЬ является частью Вашей среды процесса входа в систему, это должно быть экспортировано в каждую оболочку, которую Вы запускаете впоследствии.