Відповіді:
Традиційно місце для визначення змінних умов середовища для користувачів у системах 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 є частиною середовища вашого процесу входу, його слід експортувати до кожної запущеної оболонки.