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