Последовательность скриптов, полученных при входе в систему
Я хотел бы сосредоточить все свои настройки входа в систему ~/.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
это означает, что вы используете интерактивную оболочку входа в систему, см. выше, что это значит. Итак, вкратце, вещи, которые вас интересуют, получены при входе в систему (и в следующем порядке):
- Демон SSH, через
pam_motd
модуль библиотеки PAM, отображает содержимое/etc/motd
, Черезpam_env
модуль, он устанавливает переменные окружения из/etc/environment
а также~/.pam_environment
, - Запускается оболочка входа в систему, и следующие файлы читаются по порядку:
/etc/profile
/etc/bash.bashrc
(Ubuntu по умолчанию/etc/profile
источники/etc/bash.bashrc
).~/.bash_profile
, Другие файлы, которые можно было прочитать здесь (~/.profile
а также~/.bash_login
) игнорируются, потому что~/.bash_profile
существует.
Информация, которую вы видите, когда вы входите через ssh, создается еще до того, как /etc/profile даже просматривается. Посмотрите на последовательность файлов в /etc/update-motd.d. Это покажет вам, где сообщения, которые вы видите, генерируются различными сценариями.
Кроме того,
/etc/issue
создается перед входом в систему, как описано в
man 5 issue
.