Поиск по сайту:

Понимание файлов инициализации оболочки и профилей пользователей в Linux


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

Linux также позволяет создавать и поддерживать пользовательские среды двумя основными способами: с использованием общесистемных (глобальных) и специфичных для пользователя (персональных) конфигураций. Обычно основным методом работы с системой Linux является оболочка, и оболочка создает среду в зависимости от определенных файлов, которые она читает во время своей инициализации после успешного входа пользователя в систему.

Рекомендуется к прочтению: Как установить переменные среды в Linux

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

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

Если вы используете другую программу оболочки (zsh, ash, fish и т. д.), прочтите ее документацию, чтобы узнать больше о некоторых связанных файлах, о которых мы поговорим здесь.

Инициализация оболочки в Linux

Когда оболочка вызывается, она считывает определенные файлы инициализации/запуска, которые помогают настроить среду для самой оболочки и пользователя системы; это предопределенные (и настроенные) функции, переменные, псевдонимы и т. д.

Существует две категории файлов инициализации, считываемых оболочкой:

  • Общесистемные файлы запуска – они содержат глобальные конфигурации, которые применяются ко всем пользователям системы и обычно располагаются в каталоге /etc. К ним относятся: /etc/profiles и /etc/bashrc или /etc/bash.bashrc.
  • файлы запуска, специфичные для пользователя – в них хранятся конфигурации, которые применяются к одному пользователю в системе и обычно располагаются в домашнем каталоге пользователя в виде точечных файлов. Они могут переопределить общесистемные конфигурации. К ним относятся: .profiles, .bash_profile, .bashrc и .bash_login.

Опять же, оболочку можно вызвать в трех возможных режимах:

1. Интерактивная оболочка входа

Оболочка вызывается после успешного входа пользователя в систему с помощью /bin/login после чтения учетных данных, хранящихся в файле /etc/passwd.

Когда оболочка запускается как интерактивная оболочка входа в систему, она считывает /etc/profile и его пользовательский эквивалент ~/.bash_profile.

2. Интерактивная оболочка без входа в систему

Оболочка запускается из командной строки с помощью программы оболочки, например $/bin/bash или $/bin/zsh. Его также можно запустить с помощью команды /bin/su.

Кроме того, интерактивную оболочку без входа в систему можно также вызвать с помощью терминальной программы, такой как konsole, terminator или xterm, из графической среды.

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

su
ls -la

3. Неинтерактивная оболочка

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

Понимание общесистемных файлов запуска оболочки

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

Файл /etc/profile – в нем хранятся общесистемные конфигурации среды и программы запуска для настройки входа в систему. В этот файл следует добавить все конфигурации, которые вы хотите применить ко всем средам пользователей системы.

Например, здесь вы можете установить глобальную переменную среды PATH.

cat /etc/profile

Примечание. В некоторых системах, таких как RHEL/CentOS 7, вы получите такие предупреждения, как «Не рекомендуется изменять этот файл, если вы не знай, что делаешь. Гораздо лучше создать собственный сценарий оболочки .sh в /etc/profile.d/ для внесения пользовательских изменений в вашу среду, поскольку это предотвратит необходимость слияния в будущие обновления».

В каталоге /etc/profile.d/ хранятся сценарии оболочки, используемые для внесения пользовательских изменений в вашу среду:

cd /etc/profile.d/
ls  -l 

Файл /etc/bashrc или /etc/bash.bashrc содержит общесистемные функции и псевдонимы, включая другие конфигурации, применимые ко всем пользователям системы.

Если в вашей системе имеется несколько типов оболочек, рекомендуется поместить в этот файл конфигурации, специфичные для bash.

cat /etc/bashrc

Понимание пользовательских файлов запуска оболочки

Далее мы объясним больше о точечных файлах запуска оболочки (bash) для конкретного пользователя, которые хранят конфигурации для конкретного пользователя в системе. Они расположены в домашнем каталоге пользователя и включают в себя:

ls -la

Файл ~/.bash_profile – в нем хранятся настройки пользовательской среды и программ запуска. Здесь вы можете установить свою собственную переменную среды PATH, как показано на снимке экрана ниже:

cat ~/.bash_profile

Файл ~/.bashrc – в этом файле хранятся псевдонимы и функции, специфичные для пользователя.

cat ~/.bashrc

Файл ~/.bash_login – он содержит определенные конфигурации, которые обычно выполняются только при входе в систему. Если ~/.bash_profile отсутствует, bash будет читать этот файл.

Файл ~/.profile – этот файл читается при отсутствии ~/.bash_profile и ~/.bash_login; он может хранить те же конфигурации, которые также могут быть доступны другим оболочкам в системе. Поскольку здесь мы в основном говорили о bash, обратите внимание, что другие оболочки могут не понимать синтаксис bash.

Далее мы также объясним два других важных файла, специфичных для пользователя, которые не обязательно являются файлами инициализации bash:

Файл ~/.bash_history – bash хранит историю команд, введенных пользователем в системе. Этот список команд хранится в домашнем каталоге пользователя в файле ~/.bash_history.

Чтобы просмотреть этот список, введите:

history 
or 
history | less

Файл ~/.bash_logout — он не используется для запуска оболочки, но хранит конкретные инструкции пользователя для процедуры выхода из системы. Он читается и выполняется, когда пользователь выходит из интерактивной оболочки входа в систему.

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

cat bash_logout 

Для получения дополнительной информации ознакомьтесь с содержимым этих файлов инициализации оболочки в различных дистрибутивах Linux, а также прочитайте справочную страницу bash:

На данный момент это все! В этой статье мы объяснили файлы запуска/инициализации оболочки в Linux. Используйте форму комментариев ниже, чтобы написать нам.