Вопрос «куда пихать алиасы, в .bashrc или .bash_profile» я слышал чаще, чем «а почему у меня ничего не работает». Эти два файла — как два админа в одной комнате: вроде делают одно дело, но каждый в своём стиле и в своё время.
.bashrc — парень на каждый день
Запускается каждый раз, когда открываешь новый интерактивный терминал.
Что туда обычно пихают:
- алиасы (
alias ll='ls -lah') - функции для терминала
- переменные среды, нужные именно в интерактивке (
PS1,EDITOR,PATHи прочее)
Туда не надо пихать то, что должно отработать только один раз при входе в систему — иначе будешь вешать себе килограммы дублирующихся настроек.
.bash_profile — встречает с утра
Запускается один раз при логине. Это может быть SSH, вход через tty, графический логин, что угодно.
Что туда пихают:
- глобальные переменные среды, нужные не только в терминале
- всякое, что должно отработать только раз (например, запуск агента SSH)
Частая практика: внутри .bash_profile вызвать .bashrc, чтобы всё, что нужно для интерактивки, тоже подтянулось. Например:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi Где подлянка
- На Linux обычно работают оба файла, но с разной логикой.
- На macOS долгое время работал только
.bash_profile, и люди тупо теряли свои алиасы, потому что пихали их в.bashrc. - Некоторые системы вообще забивают на
.bash_profileи используют.profile.
Как жить, чтобы не материться
- Всё, что относится к терминалу — в
.bashrc. - Всё, что должно жить во всей сессии — в
.bash_profile. - Если боишься забыть, просто в
.bash_profileсделайsource ~/.bashrc. Это не убьёт тебя, но спасёт от «почему у меня нет алиасов по SSH».
Заключение
.bashrc и .bash_profile — это не «или-или». Это «каждый в своём месте». Один на повседневку, другой на приём гостей. Путаешь — получаешь бардак, дубли, странные баги и кучу ненужных нервов. Хочешь работать чисто — держи их раздельно, но дружно.
0 комментариев