Відповіді:
Традиційно місце для визначення змінних умов середовища для користувачів у системах 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, або запуску оболонки входу в кожному терміналі в середовищі GUI. Обидва - погані ідеї; Однією з причин є проблема, яку ви зіткнули, а саме те, що ваші змінні середовища були доступні лише в програмах, запущених через термінал, а не в програмах, запущених безпосередньо із піктограми чи меню або ярлика клавіатури.
.profileчитається під час входу. Введення змінних середовища .bashrcне працює, і ваш сценарій ілюструє, що: у програмі (імовірно, графічному інтерфейсі), яка запускає цю оболонку, повинні бути ваші змінні середовища, але якщо ви їх визначите .bashrc, вона не буде ' т.
Остаточна відповідь знаходиться в розділі сторінки bash man у файлах запуску Bash . "Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, Bash зчитує та виконує команди з ~ / .bashrc, якщо цей файл існує."
Відповіді на ваші інші запитання вказують, що eshell насправді не працює bash. Emacs eshell- ні bash. Якщо припустити, що eshellзавантаження .bashrcбуде таким же несправним, як і припущення zshабо cshзавантаження .bashrc. Це інша оболонка.
Я бачу два варіанти:
bashта коду elisp eshell.Можливо, вас також зацікавить дискусія щодо додавання каталогу до шляху без дублікатів .
Установка PATH у вашому ~ / .profile повинна просто працювати. Цей файл читається при вході в систему, що відповідає сумісності POSIX або оболонці Борна, включаючи bash. Якщо ви внесете зміни до цього файлу, вам доведеться вийти з системи та увійти знову, щоб зміни вступили в силу. Оскільки PATH є частиною середовища вашого процесу входу, його слід експортувати до кожної запущеної оболонки.