Организация UNIX-систем и ОС Solaris

       

Запуск командного процессора


Командный процессор запускается либо при входе пользователя в систему, и в дальнейшем пользователь отдает команды в его командной строке, либо из какой-нибудь программы (по команде пользователя). Частным случаем является запуск командного процессора из другого командного процессора. Например, вы работаете в sh и хотите получить более удобные средства редактирования командной строки; для этого вызывается bash. Тогда вы просто набираете команду

bash

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

Каждый командный процессор при запуске пытается выполнить свои стартовые файлы, вначале системные (общие для всех пользователей), а затем пользовательские. Общие файлы лежат в /etc, индивидуальные - в домашнем каталоге пользователя. Если командный процессор запускается при входе пользователя в систему (в таком случе он называется login shell - командный процессор, запущенный при входе в систему), то после стартовых файлов он выполняет еще и login-файлы в том же порядке: сначала общий login-файл из /etc, затем - индивидуальный, из домашнего каталога. Login-файлы - это тоже стартовые файлы командного процессора, все стартовые файлы фактически представляют собой скрипты на языке командного процессора и служат для инициализации среды окружения командного процессора для конкретного пользователя. Настройка командного процессора для пользователя позволяет, например, задать короткие псевдонимы для длинных часто используемых команд и т.п.

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

Таблица 10.3. Стартовые файлы командных процессоров

shellстартовые файлыlogin-файлы
sh/etc/profile, ~/.profile
csh/etc/csh.cshrc, ~/.cshrc/etc/csh.login, ~/.login
ksh/etc/profile, ~/.profile
bash~/.bashrc/etc/profile, ~/.bash_profile, ~/.profile

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

Командный процессор bash, в отличие от других, использует более сложный алгоритм выполнения стартовых и login-файлов. Если он запущен как login shell, то он выполняет /etc/profile, если такой файл есть. Затем делается попытка выполнить ~/.bash_profile. Если такого файла нет, bash пытается выполнить файл ~/.bash_login, а если нет и такого файла, то выполняется ~/.profile. Если bash запущен не как login shell, то при старте он выполняет только файл ~/.bashrc. Если же bash был запущен как sh (т.е. sh является символьной ссылкой на bash), то при старте он ведет себя так же, как и sh.



Содержание раздела