Які файли налаштування слід використовувати для налаштування змінних оточуючих середовищ за допомогою bash?


9

Як я запитав і отримав відповіді тут , і тут , змінна PATH має різні назви шляхів залежно від того, як активовано додаток.

  • Які файли налаштування (.bashrc, .profile, ...) слід використовувати, щоб мати ту саму змінну PATH незалежно від того, як я запускаю програмне забезпечення з bash?

Відповіді:


15

Традиційно місце для визначення змінних умов середовища для користувачів у системах 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 та .bash_profile не читаються. Якщо ви хочете встановити env vars для цих програм, один із способів зробити це - встановити їх у .bashrc, хоча це не повинно бути місцем для нього; дивіться github.com/mobile-shell/mosh/isissue/102#issuecomment-12503646
Вільям

@William .profileчитається під час входу. Введення змінних середовища .bashrcне працює, і ваш сценарій ілюструє, що: у програмі (імовірно, графічному інтерфейсі), яка запускає цю оболонку, повинні бути ваші змінні середовища, але якщо ви їх визначите .bashrc, вона не буде ' т.
Жиль

mosh не GUI, це альтернатива ssh. Я не відстоюю її поведінку, просто намагаюся допомогти іншим, хто стикається з тією ж проблемою, що і у мене та інших, як описано в питанні Github, яке я пов’язував.
Вільям

2

Остаточна відповідь знаходиться в розділі сторінки bash man у файлах запуску Bash . "Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, Bash зчитує та виконує команди з ~ / .bashrc, якщо цей файл існує."

Відповіді на ваші інші запитання вказують, що eshell насправді не працює bash. Emacs eshell- ні bash. Якщо припустити, що eshellзавантаження .bashrcбуде таким же несправним, як і припущення zshабо cshзавантаження .bashrc. Це інша оболонка.

Я бачу два варіанти:

  1. Створіть власний скрипт, який містить список каталогів та генерує відповідний баш-код для bashта коду elisp eshell.
  2. Встановіть змінну середовища ESHELL або SHELL таким чином, щоб ви фактично запускали баш в emacs. Це я і роблю. Bash чудово працює в emacs.

Можливо, вас також зацікавить дискусія щодо додавання каталогу до шляху без дублікатів .


1

Установка PATH у вашому ~ / .profile повинна просто працювати. Цей файл читається при вході в систему, що відповідає сумісності POSIX або оболонці Борна, включаючи bash. Якщо ви внесете зміни до цього файлу, вам доведеться вийти з системи та увійти знову, щоб зміни вступили в силу. Оскільки PATH є частиною середовища вашого процесу входу, його слід експортувати до кожної запущеної оболонки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.