3.4. Командная оболочка. Bash
3.4. Командная оболочка. Bash
Важнейшим из пользовательских процессов является командная оболочка (она же командный интерпретатор, или просто shell). Именно она обеспечивает взаимодействие пользователя с системой в текстовом режиме, позволяя вводить команды. Именно она запускается, когда вы регистрируетесь на текстовой консоли, и предоставляет вам интерфейс командной строки.
Не нужно, увлекшись удобствами графического интерфейса, недооценивать командную строку. Во-первых, многие административные задачи могут быть выполнены только оттуда; во-вторых, командная строка — самое удобное средство автоматизации рутинных процедур.
Командой в Linux считается все, что может быть исполнено: исполняемые файлы, встроенные команды оболочки, псевдонимы команд, пользовательские функции, файлы сценариев (скрипты) — заранее подготовленные последовательности команд в текстовом виде. До сих пор, приводя примеры команд, я не различал их по происхождению, и дальше не собираюсь делать этого, кроме особых случаев.
Оболочка принимает вводимые пользователем команды, обрабатывает, если нужно, их аргументы, отправляет команды на выполнение, принимает возвращаемые ими значения и выполняет определенные действия в зависимости от этих значений. Кроме того, в оболочку встроен язык программирования (командный язык), позволяющий писать сложные разветвленные командные сценарии. Именно командный язык отличает разные оболочки друг от друга, и именно из него исходят пользователи, выбирая любимую и нелюбимую оболочки.
Для Linux разработано много командных интерпретаторов. Вот несколько из них:
sh Bourne shell, оболочка Борна, стандарт для многих UNIX-подобных систем;
bash Bourne Again shell, «еще одна оболочка Борна»;
csh С shell, оболочка Си: синтаксис ее командного языка похож на синтаксис языка С;
tcsh tiny С shell, минимальная оболочка Си;
pdksh public domain Korn shell, общедоступная оболочка Корна;
sash stand-alone shell, автономная оболочка, может быть использована в случае, когда программные библиотеки недоступны.
Список всех установленных в системе программ-оболочек находится в файле /etc/shells. У меня он выглядит так:
/bin/sh
/bin/bash
/sbin/nologin # это "оболочка" для тех,
# кому запрещен вход в систему
/bin/ash
/bin/bsh
/bin/ksh
/usr/bin/ksh
/usr/bin/pdksh
/bin/tcsh
/bin/csh
Начальная оболочка для каждого пользователя, запускаемая для него при регистрации в системе, указывается в файле /etc/passwd:
$ grep den /etc/passwd # выбрать из файла строки,
# содержащие подстроку den
den:x:501:501:Denis:/home/den:/bin/bash
В дальнейшем вы можете сменить текущую ободочку на любую из установленных (точнее, войти в подоболочку). Чтобы выйти из нее и вернуться в родительскую оболочку, введите команду exit. В начальной оболочке эта команда завершает сеанс работы.
В любой оболочке можно запускать командные сценарии, состоящие из команд другой оболочки: первая строка каждого сценария содержит указание на то, в какой оболочке его следует выполнять, и текущая оболочка запускает для него указанную как дочерний процесс.
По умолчанию новому пользователю назначается оболочка bash. Это прекрасная оболочка, включающая много усовершенствований и лучших свойств других ободочек, и менять ее я не рекомендую. В дальнейшем, говоря «оболочка», я буду иметь в виду именно bash.
Данный текст является ознакомительным фрагментом.