Программы Оболочки

После входа пользователя в систему запускается программа, предоставляющая пользователю командную строку. Это так называемая оболочка (shell). Задача оболочки — дать возможность пользователю запускать на выполнение программы. Кроме того, в шелл встроен язык программирования, так называемый shell script. На этом языке можно писать командные файлы аналоги BAT файлов Windows. В дальнейшем я буду называть программы, написанные на этом языке просто скриптами.

За время существования UNIX было написано большое количество программ оболочек. Самая первая — это Bourne Shell (программа называется sh). Но когда господин Борн написал эту программу, все очень удивились. Язык программирования, встроенный в нее не был похож на привычный всем язык С! В дальнейшем мы будем изучать этот язык и Вы поймете, что он очень не однозначен. Но его знание является обязательным для любого администратора Linux.

Компания, разработавшая систему BSD, написала свой вариант оболочки — С shell (csh). И с тех пор существуют два направления в программах оболочках: sh и csh.

Время не стоит на месте. В базовые программы вносились дополнения. Сейчас существует много разнообразных вариантов на тему той или иной разновидности оболочек. Если посмотреть на классический sh, то его дальнейшее развитие — это ksh (Корн шелл) и bash (Еще один шелл Борна). Последний написан сообществом GNU и входит в Linux как оболочка по умолчанию. Среди последователей csh наиболее известен tcsh. Эта оболочка по умолчанию применяется в BSD системах. Tcsh так же может использоваться в Linux.

Несмотря на то, что основные принципы работы пользователей одинаковы во всех разновидностях оболочек, все-таки существуют различные нюансы. В некоторых вариантах оболочек были добавлены новые возможности, которые отсутствуют в других вариантах. И это может накладывает ограничения на Вашу работу.

Вам всегда необходимо точно знать в какой оболочке Вы работаете. Существует несколько способов узнать это. Самый простой — это посмотреть специальную переменную среды окружения. В Linux как и в Windows, а если говорить точнее, то в Windows как и в UNIX1, существует такое понятие, как переменные среды окружения. Наиболее известная переменная — это PATH. В Linux есть специальная переменная в которой хранится имя оболочки в которой Вы сейчас работаете — SHELL. Для того, что бы посмотреть ее содержимое можно воспользоваться программой echo, которой в качестве аргумента в командной строке следует указать переменную, перед именем которой стоит специальный символ «$».

Внимание! В Linux учитывается регистр букв. То есть если Вы напишите file или File — это будут два разных слова.

Внимание! В командной строке Linux, аргументы командной строки обязательно отделяются друг от друга пробелами или табуляциями. Нельзя, как это принято в Windows, писать параметр сразу после имени программы.

Итак, что бы посмотреть содержимое переменной среды окружения SHELL, необходимо выполнить следующую команду:


$ echo $SHELL
/bin/bash
$

В результате, на экран терминала был выведен полный путь к файлу шелл.

Внимание! Символ «$» в начале строки — это приглашение командной строки. Если Вы будете вводить команды в командной строке, «$» писать не надо. В Вашей системе приглашение командной строки может выглядеть по другому, все зависит от настроек.

Еще один способ определить шелл в котором Вы работаете — это посмотреть список процессов, выполняемых текущим пользователем на текущем терминале. Для этого можно воспользоваться программой ps.


$ ps
    ID  TTY        TIME     CMD
    96  tty1       00:00:00 bash
    194 tty1       00:00:00 ps
$

На экран выводится список процессов. Самый первый процесс — это обычно шелл в котором Вы сейчас работаете.

Для завершения работы в системе, можно воспользоваться одной из перечисленных ниже команд:

  • logout
  • exit
  • комбинация клавиш «Ctrl+D».

Logout — это классическая команда, которую можно использовать в любой оболочке. Будет ли работать команда exit или комбинация клавиш «Ctrl+D», зависит от реализации оболочки.

После выхода из системы, сама система продолжает работать. Просто еще один пользователь вышел. Для выключения Linux необходимо иметь соответствующие права для использования совсем другой программы.