вид замысловатого взгляда, но я использовал его для разыскивания проблем использования диска на наших полях 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
.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 совместимые оболочки и другие расширения, относящиеся к той конкретной оболочке.
Согласно странице руководства bash, .bash_profile
выполняется для оболочек входа в систему, а .bashrc
выполняется для интерактивных оболочек без входа.
Итак, что такое оболочка для входа или без входа?
Когда вы входите в систему (введите имя пользователя и пароль) через консоль, сидя за машиной или удаленно через ssh: выполняется .bash_profile
для настройки вашей оболочки перед начальной командной строкой.
Но если вы уже вошли в систему и открыли новое окно терминала (xterm) внутри Gnome или KDE, то .bashrc
выполняется перед командной строкой окна. .bashrc
также запускается, когда вы запускаете новый экземпляр bash, набрав в терминале / bin / bash
.
Исключением из правил окон терминала является Терминал Mac OS X. app, который по умолчанию запускает оболочку входа в систему для каждого нового окна терминала, вызывая .bash_profile
вместо .bashrc
. Другие эмуляторы терминала GUI могут делать то же самое, но большинство из них не делают этого.
Подробнее здесь .
.profile
.profile
предназначен для вещей, которые не имеют прямого отношения к Bash
, например, переменных среды PATH
и других, и должен быть доступен в любое время.
Например, .profile
также должен быть загружен при запуске сеанса графического рабочего стола.
.bashrc
.bashrc
предназначен для настройки интерактивного Использование Bash, например псевдонимы Bash
, установка вашего любимого редактора
, установка приглашения Bash
и т. Д.
.bash_profile
.bash_profile предназначен для создания убедитесь, что оба файла в .profile
и .bashrc
загружены для оболочек входа
.
Например, .bash_profile
может быть чем-то простым, например
. ~/.profile
. ~/.bashrc
. Если вы опустите .bashrc
,будет загружен только .profile
.
Я обратился к справочной странице для этого ответа (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.