Каковы функциональные различия между .profile .bash_profile и .bashrc

вид замысловатого взгляда, но я использовал его для разыскивания проблем использования диска на наших полях Oracle:

tree -s -f > /tmp/out1 && sleep 5 && tree -s -f > /tmp/out2; diff /tmp/out1 /tmp/out2 | egrep "\|--" | awk -F[ '{print $2}' | awk -F] '{print $2 }' | sort | uniq | xargs fuser f | xargs ps -lFp
198
задан 24 June 2016 в 18:24
4 ответа

.bash_profile и .bashrc характерны для bash, тогда как .profile читается многими оболочками в отсутствие их собственных определенных для оболочки файлов конфигурации. (.profile использовался исходной Оболочкой Bourne.) .bash_profile или .profile читается оболочками входа в систему, наряду с .bashrc; подоболочки, только для чтения .bashrc. (Между управлением заданиями и современными системами управления окнами, .bashrc отдельно не привыкает очень. Если Вы используете screen или tmux, экраны/окна обычно выполняют подоболочки вместо оболочек входа в систему.)

Идея позади этого состояла в том, что одноразовая установка была сделана .profile (или определенная для оболочки версия этого) и материал на оболочку .bashrc. Например, Вы обычно только хотите загрузить переменные среды, после того как на сессию вместо того, чтобы получить их бил любое время, Вы запускаете подоболочку в рамках сессии, тогда как Вы всегда хотите свои псевдонимы (которые не распространены автоматически как переменные среды).

Другие известные файлы конфигурации оболочки:

/etc/bash_profile (нейтрализация /etc/profile) читается перед пользователем .profile для конфигурации в масштабе всей системы, и аналогично /etc/bashrc в подоболочках (никакая нейтрализация для этого). Много систем включая Ubuntu также используют /etc/profile.d каталог, содержащий оболочку scriptlets, которые являются . (source) - редактор от /etc/profile; фрагменты здесь на оболочку, с *.sh применение ко всей Границе/POSIX совместимые оболочки и другие расширения, относящиеся к той конкретной оболочке.

163
ответ дан 16 December 2019 в 22:45

Согласно странице руководства bash, .bash_profile выполняется для оболочек входа в систему, а .bashrc выполняется для интерактивных оболочек без входа.

Итак, что такое оболочка для входа или без входа?

Когда вы входите в систему (введите имя пользователя и пароль) через консоль, сидя за машиной или удаленно через ssh: выполняется .bash_profile для настройки вашей оболочки перед начальной командной строкой. Но если вы уже вошли в систему и открыли новое окно терминала (xterm) внутри Gnome или KDE, то .bashrc выполняется перед командной строкой окна. .bashrc также запускается, когда вы запускаете новый экземпляр bash, набрав в терминале / bin / bash .

Исключением из правил окон терминала является Терминал Mac OS X. app, который по умолчанию запускает оболочку входа в систему для каждого нового окна терминала, вызывая .bash_profile вместо .bashrc . Другие эмуляторы терминала GUI могут делать то же самое, но большинство из них не делают этого.

Подробнее здесь .

40
ответ дан 16 December 2019 в 22:45

.profile

.profile предназначен для вещей, которые не имеют прямого отношения к Bash , например, переменных среды PATH и других, и должен быть доступен в любое время.

Например, .profile также должен быть загружен при запуске сеанса графического рабочего стола.


.bashrc

.bashrc предназначен для настройки интерактивного Использование Bash, например псевдонимы Bash , установка вашего любимого редактора , установка приглашения Bash и т. Д.


.bash_profile

.bash_profile предназначен для создания убедитесь, что оба файла в .profile и .bashrc загружены для оболочек входа .

Например, .bash_profile может быть чем-то простым, например

. ~/.profile
. ~/.bashrc

. Если вы опустите .bashrc ,будет загружен только .profile .

66
ответ дан 16 December 2019 в 22:45

Я обратился к справочной странице для этого ответа (man bash).

Из https://linux.die.net/man/1/bash

Когда bash вызывается как интерактивная оболочка входа или как неинтерактивная оболочка с параметром --login сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. Прочитав этот файл, он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также считывает и выполняет команды, начиная с первой существующей и доступной для чтения. То --noprofile Параметр может использоваться при запуске оболочки, чтобы запретить такое поведение.

При запуске интерактивной оболочки, не являющейся оболочкой входа, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc, если эти файлы существуют. Это можно запретить с помощью параметра --norc. Опция файла --rcfile заставит bash читать и выполнять симпатичные команды из файла вместо /etc/bash.bashrc и ~/.bashrc.

0
ответ дан 20 August 2021 в 18:38

Теги

Похожие вопросы