1

Возможный дубликат:
Когда я должен положить конфигурации в .bashrc против. .bash_profile?

Я n00b, когда дело доходит до работы в Linux env и хотел бы знать назначение .bashrc и .bash_profile . Я только знаю, что они специфичны для каждой учетной записи пользователя. Какие функции / поведение можно добавить / изменить, внедрив что-то в эти файлы

2 ответа2

5

Во-первых, .bash_profile используется только для оболочек входа в систему. .bashrc используется для любой другой оболочки bash. Поэтому .bash_profile , как правило, будет источником .bashrc если он существует, поэтому вам не нужно дублировать команды, которые вы хотите выполнить для каждой оболочки, независимо от того, была ли она оболочкой входа или нет.

Вообще говоря, с этими сценариями можно сделать две вещи: запускать программы и устанавливать переменные среды. Все, что вы хотите запустить при входе в систему, вы помещаете в .bash_profile , все, что вы хотите установить в каждой оболочке (например, если вы используете screen или открываете терминал), вы помещаете в .bashrc .

Некоторые вещи из моего собственного .bashrc (как пример):

  • Установить $PS1
  • Включить специальные правила заполнения вкладок
  • Установите параметры оболочки, запустив shopt
  • Настройте псевдонимы команд

Из моего .bash_profile:

  • Источник .bashrc
  • Добавить каталоги в $PATH
  • Запустите ssh-agent

Важно отметить, что .bash_profile выполняется только если вы входите непосредственно в оболочку bash. Если вы начинаете X-сеанс, вы входите в X-сервер, который будет иметь свой собственный скрипт входа (обычно что-то вроде .xsession)

4

Все это объясняется в Руководстве по Bash в разделе "Файлы запуска Bash": http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files.

ОБНОВЛЕНИЕ: вот короткая версия:

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

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, Bash читает и выполняет команды из ~/.bashrc , если этот файл существует.

Когда Bash запускается неинтерактивно, например, для запуска сценария оболочки он ищет переменную BASH_ENV в среде, расширяет ее значение, если оно там появляется, и использует расширенное значение в качестве имени файла для чтения и выполнения. ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .