Последовательность скриптов, полученных при входе в систему

Я хотел бы сосредоточить все свои настройки входа в систему ~/.bash_profile, Был ~/.bashrc там по умолчанию, но я заменил его ~/.bash_profile,

Однако, когда я вхожу, что-то перед моим ~/.bash_profile получает источник и отображает следующее:

Linux ubnt10-dev1 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS

Welcome to the Ubuntu Server!
 * Documentation:  http://www.ubuntu.com/server/doc

  System information as of Fri May  9 12:17:39 EDT 2014

  System load:  0.01              Processes:           74
  Usage of /:   5.5% of 18.58GB   Users logged in:     0
  Memory usage: 4%                IP address for eth0: 123.x.x.x
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/

New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.

Last login: Fri May  9 12:11:52 2014 from 123.x.x.x

Я хотел бы удалить это так, чтобы только мое собственное приветствие всплеска, определенное в моем ~/.bash_profile получает показы, но я не уверен в логике / последовательности сценариев, которые были получены / выполнены, когда пользователь входит в систему. Можете ли вы просветить меня?

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

3 ответа

Решение

Это довольно сложно. Прежде всего, детали зависят от того, какую оболочку вы используете. Плагиат себя:

  • При открытии терминала эмулятор (gnome-terminal например), вы выполняете так называемую интерактивную оболочку без авторизации.

  • Когда вы входите на свой компьютер из командной строки или запускаете такую ​​команду, как su - username вы используете интерактивную оболочку входа в систему.

  • Когда вы входите в систему графически, вы запускаете что-то совершенно другое. Детали будут зависеть от вашей системы и графического окружения, но в целом, это графическая оболочка, которая обрабатывает ваш логин. В то время как многие графические оболочки (включая Ubuntu по умолчанию) будут читать /etc/profile а также ~/.profile не все из них делают.

  • Наконец, когда вы запускаете сценарий оболочки, он запускается в неинтерактивной оболочке без входа в систему.

Файлы, которые bash будет читать при запуске, зависят от типа оболочки, в которой он запущен. Ниже приведен отрывок из раздела ПРИЗНАНИЕ man bash (выделение мое):

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

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

Это файлы инициализации. У вас также есть /etc/environment где вы можете установить глобальные переменные окружения, но они читаются, а не исходные (команды внутри него не выполняются, но задаются определения переменных).

Теперь приветствие, которое вы видите, - это нечто другое. Это установлено в /etc/motd и отображается через pam_motd, Как объяснено в man motd:

Содержимое /etc/motd отображается pam_motd(8) после успешного входа в систему, но непосредственно перед запуском оболочки входа.

Аббревиатура "motd" означает "сообщение дня", и этот файл традиционно используется именно для этого (он требует гораздо меньше дискового пространства, чем почта для всех пользователей).

В Debian GNU/Linux также отображается содержимое /run/motd.dynamic. Этот файл генерируется /etc/init.d/motd при загрузке.

Чтобы удалить сообщение, просто очистите /etc/motd файл и убедитесь, что ничего не генерируется /etc/init.d/motd если представить.


В любом случае, судя по выводу, который вы показываете, вы входите через ssh это означает, что вы используете интерактивную оболочку входа в систему, см. выше, что это значит. Итак, вкратце, вещи, которые вас интересуют, получены при входе в систему (и в следующем порядке):

  1. Демон SSH, через pam_motd модуль библиотеки PAM, отображает содержимое /etc/motd, Через pam_env модуль, он устанавливает переменные окружения из /etc/environment а также ~/.pam_environment,
  2. Запускается оболочка входа в систему, и следующие файлы читаются по порядку:
    1. /etc/profile
    2. /etc/bash.bashrc (Ubuntu по умолчанию /etc/profile источники /etc/bash.bashrc).
    3. ~/.bash_profile, Другие файлы, которые можно было прочитать здесь (~/.profile а также ~/.bash_login) игнорируются, потому что ~/.bash_profile существует.

Информация, которую вы видите, когда вы входите через ssh, создается еще до того, как /etc/profile даже просматривается. Посмотрите на последовательность файлов в /etc/update-motd.d. Это покажет вам, где сообщения, которые вы видите, генерируются различными сценариями.

Кроме того, /etc/issueсоздается перед входом в систему, как описано в man 5 issue.

Другие вопросы по тегам