В чем разница между различными профилями оболочки? - PullRequest
8 голосов
/ 16 июня 2011

В чем разница между ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, ~ / .bash_profile, ~ / .profile, / etc / profile, /etc/bash.bashrc, / etc / ssh / ssh_config и sshd_config, когда они загружаются и каковы их цели?

Ответы [ 2 ]

6 голосов
/ 05 июля 2011

Страница man для bash говорит, что есть следующие файлы инициализации для оболочек bash:

/etc/profile
      The systemwide initialization file, executed for login shells
/etc/bash.bashrc
      The systemwide per-interactive-shell startup file
/etc/bash.bash.logout
      The systemwide login shell cleanup file, executed when a login shell exits
~/.bash_profile
      The personal initialization file, executed for login shells
~/.bashrc
      The individual per-interactive-shell startup file
~/.bash_logout
      The individual login shell cleanup file, executed when a login shell exits
~/.inputrc
      Individual readline initialization file

По-видимому, существуют разные файлы конфигурации для различных оболочек (bash, zsh, csh и другие). Кажется, что существует столько же оболочек, сколько разных версий linux и unix: csh, ksh, bash, zsh, ... Bash имеет .bashrc, Zsh имеет .zshrc и т. Д. Можно также различать входящие и не входящие оболочки -login оболочки и между общесистемными значениями по умолчанию и пользовательскими значениями по умолчанию.

Имеет смысл различать login и non-login shell, потому что некоторые команды должны обрабатываться только при входе в систему, тогда как другие команды должны выполняться каждый раз, когда вы открываете новое окно терминала , В этом разница между .bash_profile и .bashrc . Для bash .bashrc перезагружается каждый раз, когда вы запускаете новую копию bash, то есть когда вы запускаете новый bash, но не входите в систему. .bash_profile или .profile загружается только при входе в систему. Аббревиатура rc в bashrc расшифровывается как «команды запуска» или «управление выполнением» и является соглашением, принятым в более старых системах Unix.

общесистемные значения по умолчанию для ..

  • /etc/profile ..login shell, для интерактивных оболочек с логином
  • /etc/bashrc ..non-login Bash shell

пользовательские настройки по умолчанию в домашнем каталоге ~ для ..

  • ~/.profile ..login оболочки, вызываемые после входа в систему
  • ~/.bashrc ..non-login shell, если уже вошли в систему
  • ~/.bash_profile ..login оболочки, вызываемые после входа в систему (более низкий приоритет)

пользовательские настройки по умолчанию в домашнем каталоге для входа и выхода из системы

  • ~/.bash_login ..login shell (вызывается при входе в систему)
  • ~/.bash_logout ..login shell (вызывается при выходе из системы)

Были полезны следующие ссылки: .bashrc против .bashprofile и .bash_profile против .bashrc , страница руководства bash (man bash) и Порядок загрузки файлов запуска Zsh / Bash (.bashrc, .zshrc и т. Д.) .

2 голосов
/ 09 ноября 2013

Мне было любопытно узнать об этих файлах, и я сам поэкспериментировал.Оказывается, это немного отличается от того, что в документах.

Я знаю разницу между интерактивным и неинтерактивным или входом в систему и не входом в систему.

Я пробовал на двух компьютерах,мой MacBook Pro с OS 10.9 и сервером с сервером Ubuntu 13.10.Я добавляю следующую команду в / etc / profile:

echo "Loading /etc/profile"

и аналогичные команды в /etc/bash.bashrc, / etc / bashrc, /etc/bash.bashrc, ~ / .profile, ~/.bash_profile, ~ / .bashrc, ~ / .bash_login и убедитесь, что эти файлы не содержат друг друга внутри себя.

(ОС 10.9, GNU bash, версия 3.2.51 (1) -релиз (x86_64-apple-darwin13)) На Mac с интерактивным bash для входа в систему у меня есть:

Loading /etc/profile
Loading ~/.bash_profile

Это означает, что загружаемые файлы - это только / etc / profile и ~ / .bash_profile.

с интерактивным bash без входа в систему, у меня есть:

Loading ~/.bashrc

, что означает, что файл, загруженный напрямую, является ~ / .bashrc.

(Ubuntu Server 13.10 GNU bash, версия 4.2.45 (1) -release (x86_64-pc-linux-gnu)) В Ubuntu с интерактивным bash для входа в систему у меня есть:

Loading /etc/profile
Loading ~/.bash_profile

Это означает, что загружаемые файлы являются только / etc /профиль и ~ / .bash_profile.

с интерактивным bash без входа в систему, у меня есть:

Loading /etc/bash.bashrc
Loading ~/.bashrc

, что означает, что файлы загружаются напрямуюЭто /etc/bash.bashrc и ~ / .bashrc.

Я не знаю, почему ~

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...