bash
діє по-різному, чи це оболонка, чи звичайна мова програмування (як-от perl
або python
).
За дизайном, налаштування в ~/.bash_profile
, ~/.bashrc
і т. Д. Призначені для користувачів встановлювати речі, коли вони bash
грають роль оболонки (оболонка для входу, інтерактивна оболонка). Подумайте про середовище, яке у вас є xterm
(інтерактивна оболонка) або в ssh
сеансах (оболонка входу) або в консолі (оболонка входу).
З іншого боку, bash
також є потужною розмовною мовою - думкою про багато сценаріїв для управління сервісами, systemd
- що вимагає іншого стилю роботи. Наприклад, коли розробник пише системний сценарій або bash
програму, він / вона не любить автоматично створювати джерело користувача ~/.bash_profile
. Це звичайна програма, а не оболонка. Звичайна програма (включаючи bash
програми) природно успадковувала б налаштування від поточної робочої зони (оболонки), але не встановлювала їх.
Якщо ми пишемо програму для cron
in bash
- це просто трапляється записати в bash
; насправді, ми можемо записати його в python
або perl
будь-якої іншої progamming Мова-тоді ми можемо мати опцію джерела bash
«s ~/.bash_profile
(читай: настройка оболонки користувача, який як раз трапляється бути та сама мова вашої мови програмування):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Однак що робити, якщо конкретний користувач не використовує bash
його як свою оболонку? Він / вона може використовувати zsh
, ksh
, fish
і т.д. Таким чином, ця практика буде на самому ділі не працювати при написанні програми для громадського користування.
Отже, ви можете джерело, ~/.bash_profile
якщо ви думаєте, що це спрацює. Але тут справа не в тому, чи зможемо ми створити файл, а в тому, як слід працювати в системі: концепція дизайну . Коротше кажучи: ми повинні розглядати bash
як щось, що має 2 ролі: оболонку та мову, що розповсюджується . Тоді все буде набагато простіше зрозуміти.
.bashrc
є лінія, яка не дозволяє їй працювати в неінтерактивних оболонках.