Чи є файл Bash, який завжди розміщуватиметься в інтерактивному режимі, незалежно від того, буде він вхід чи не вхід?


10

Наскільки мені відомо, інтерактивні оболонки можуть бути вхідними або невхідними, а файли запуску для них різні.

  • Якщо інтерактивний + Ввійти оболонки → /etc/profileпотім перший читається ~/.bash_profile, ~/.bash_loginі~/.profile
  • Якщо інтерактивна оболонка + не вхід у систему → /etc/bash.bashrcтоді~/.bashrc

Я хочу встановити деякі змінні щоразу, коли я використовую інтерактивну оболонку, незалежно від того, оболонка входу чи ні.



1
@strugee Ні, це питання не стосується змінних середовища.
Жил "ТАК - перестань бути злим"

@Gilles так, але ваша відповідь стосується однаково добре.
strugee

1
@strugee Це тому, що я вийшов за рамки прямого питання і торкнувся периферійної теми. Один абзац в одній відповіді не робить дубліката. Запитання є лише дублікатами, якщо вони мають суттєво однакові відповіді, а не якщо одна відповідь містить достатньо матеріалу, щоб відповісти на другу.
Жил "ТАК - перестань бути злим"

Відповіді:


10

Ні, немає. Так, це недолік дизайну.

Використовуйте такий вміст у ~/.bash_profile:

if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi

Будьте уважні, що баш має ще більш дивний вигадку: коли це неінтерактивна оболонка входу, а батьківський процес є rshdабо sshd, джерелами баш ~/.bashrc( ~/.bash_profileабо не є ~/.profile). Тож ви можете поставити це у верхній частині свого .bashrc:

if [[ $- != *i* ]]; then return; fi

Дивіться також Різниця між .bashrc та .bash_profile та Різниця між оболонкою входу та оболонкою без входу?


Ці химерності є з міркувань безпеки (не завантажуйте несподівані файли під час роботи в налаштуваннях, що залежать від безпеки).
vonbrand

2
@vonbrand Ер, що? Ні, ці химерності абсолютно не мають нічого спільного з безпекою. Ніяких "несподіваних файлів" не задіяно (за винятком того, що завантаження .bashrcв неінтерактивній обстановці насправді може вважатися несподіваним), ні будь-яка перевірка будь-якого конфіденційного на безпеку контексту.
Жил "ТАК - перестань бути злим"

Чи є це спосіб запобігання циклів?
Брайам

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