В данной статье рассматривается вопросы настройки и использования командной оболочки.
Вопросы:
- Установка переменных во время входа в систему или при запуске оболочки.
- Написание bash-сценариев для часто используемых цепочек команд.
- Управление структурой каталогов для новых пользователей.
- Настройка корректных путей поиска команд.
Командная оболочка в Unix системах называется Shell – это командный интерпретатор, который используется во всех Unix подобных операционных системах. Оболочек огромное количество. Одной из основных оболочек является оболочка BASH или Bourne-again-shell (Еще одна оболочка Борна). Данная оболочка самая распространенная оболочка Unix, которая используется по умолчанию практически во всех дистрибутивах Linux. Все, о чем будет написано далее справедливо для большинства дистрибутивов Linux. Есть небольшой нюанс с Ubuntu.
Есть вот такая картинка по профилям. Значок~
в данном случае означает домашнюю папку пользователя по умолчанию. Например, /home/john
.
Существует папка /etc/profile
в ней лежат настройки глобального профиля. Такой профиль, который будет применяться для всех пользователей на данной машине, которые запускают командную оболочку. Функционал у него достаточно большой, но в первую очередь он грузит все что есть в /etc/profile.d
и настройки глобального пользователя /etc/bash.bashrc
и /etc/bashrc
. Получается так, что ищется файл bash.bashrc
или bashrc
файлы, т.к в разных дистрибутивах разные файлы и грузит то, что он нашел. В документации по Linux написано, если запускается инициализационный скрипт при входе в систему, т.е пользователь заходит в систему, то отрабатывает левая часть картинки, если запускается оболочка вне контекста пользователя, то правая часть.
Если пользователь залогинился в систему, то помимо того, что отрабатывает папка /etc/profile.d
начинается проверка в домашнем каталоге пользователя наличие файлов ~/.bash_profile
, ~/.bash_login
, ~/.profile
. В разных дистрибутивах по-разному называется локальный профиль пользователя. В Ubuntu файл ~/.profile
просто ссылит на ~/.bashrc
, который так же лежит в домашней папке пользователя. Т.е у нас по порядку инициализационный скрипт ищет, как указанно в левой части картинки. Точкой у Ubuntu обозначаются скрытые файлы.
Вот этот файл ~/.bashrc
– это настройки конкретного пользователя, настройки оболочки. Файл /etc/bashrc
– это настройки глобального пользователя, настройки для всех пользователей.
Суть процесса: оболочка bash используется, как интерактивная оболочка входа в систему. Данная оболочка вызывает команды из файла /etc/profile
, если он существует. Далее она по порядку начинает обрабатывать файлы ~/.bash_profile
, ~/.bash_login
, ~/.profile
. И еще есть такой файл в home директории ~/.bash_logout
– он отрабатывает при выходе из системы, что следует из его названия.
Есть второй сценарий, использование интерактивной оболочки bash, без входа в систему, то читаются файлы /etc/bash.bashrc
и /etc/bashrc
.
Мы можем посмотреть, что происходит при запуске оболочки. Для начала найдем файл /etc/profile
.
Из картинки мы видим, что данный файл грузит /etc/bash.bashrc
, в некоторых дистрибутивах это просто /etc/bashrc
. И затем он выполняет из папки /etc/profile.d/*.sh
, т.е все скрипты. Об этом можно прочитать в комментарии, всего два действия.
Посмотрим файл cat /etc/bash.bashrc
.
Данный файл определяет поведение командной строки, он определяет глобальный профиль пользователей. Все, что в нем указанно справедливо для всех пользователей. Данный файл запускает различные псевдонимы и глобальные функции, различные настройки.
В каталоге /etc
, есть папка profile.d
, в ней могут находиться различные скрипты и они будут запускаться.
Теперь посмотрим, что у нас в домашней папке, в ней лежат настройки конкретного пользователя, который работает в оболочке. Переходим в домашнюю директорию cd ~
, смотрим какие файлы там находятся.
Смотрим очередность запуска файлов и видим, что следующий файл, который запустится, будет ~/.profile
. он содержит настройки конкретного пользователя. Посмотрим, что в нем есть cat ~/.profile
.
В нем несколько переменных и он ссылит на файл ~/.bashrc
. Это особенность Ubuntu. И в файле ~/.bashrc
хранятся все настройки.
Он достаточно большой. В нем пишутся настройки истории, как происходит обновление, псевдонимы, цветовые настройки.
Можно посмотреть файл ~/.bash_logout
.
В данном файле нет ничего особенного, просто, когда кто-то выходит экран в целях безопасности очищается.
Посмотрим, как создается структура каталогов для новых пользователей. Есть такая папка в /etc/skel/
. Если мы туда перейдем и посмотрим, что в ней находиться.
Как вы видите в папке есть несколько файлов. В ней содержится все, то что будет добавляться в домашнюю папку нового пользователя. Если мы хотим пользователю, что-то добавить в его домашнюю папку, мы можем создать в данной папке файл или директорию. И у всех новых пользователей данные папки или файлы будут появляться.