Startup-скрипты Bash Shell

Изображение пользователя cristobal-junta.

Bash Shell может быть запущен в двух режимах: как interactive и non-interactive. Первый, в свою очередь, может быть login и non-login типа. Итак,

Режимы работы Bash Shell
interactive non-interactive
login non-login

Если не углубляться в подробности, то login interactive shell — это то, что видит пользователь, когда входит в систему; non-login interactive shells — это все остальные экземпляры интерпретатора, с которыми пользователь работает в интерактивном режиме, non-interactive shells — это копии интерпретатора, запущенные при исполнении командных файлов (например, тех, что начинаются со строчек #!/bin/sh или #!/usr/bin/bash).

Опять же, если не копать слишком глубоко, то login interactive shell при запуске читает файлы /etc/profile и ~/.profile, а когда завершается — ~/.bash_logout; non-login interactive shell читает файл ~/.bashrc. Некоторые вещи разумно (или необходимо!) выполнять лишь при запуске login interactive shell (например, /usr/bin/fortune), а переменные окружения и алиасы обычно одни и те же для обоих типов interactive shells; потому, если это уже не сделано системным администратором или разработчиками дистрибутива (как, например, в GNU/Linux от SuSE) для /etc/profile, то в самом начале ~/.profile имеет смысл прописать команду

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

, а все эти alias, source, export и прочее делать в ~/.bashrc. Non-interactive shell наследует уже имеющиеся настройки и по умолчанию не читает никаких конфигурационных файлов. Итак,

Порядок чтения конфигурационных файлов
interactive non-interactive
login non-login
/etc/profile
~/.bashrc
~/.profile
~/.bash_logout

Переменные окружения, выставленные при запуске login interactive shell, естественно, доступны и во всех остальных режимах работы интерпретатора:

Сфера действия конфигурационных файлов
interactive non-interactive
login non-login
~/.profile
~/.bashrc

На системах, с которыми работаю я, login interactive shell отличается от остальных экземпляров интерпретатора только тем, что при запуске системы я вижу в нем очередное fortune-изречение, а при его завершении вызывается cleanup/backup-скрипт.

Добавьте страницу в закладки. Перейти к верху страницы
Синдикация материалов