Оболочка пользователя ( shell ) в Linux.



    Операционные системы семейства Linux, как впрочем, и любые другие ОС, предполагают наличие интерфейса взаимодействия между компонентами компьютерной системы и конечным пользователем, т. е. наличие программного уровня, который обеспечивает ввод команд и параметров для получения желаемых результатов. Такой программный уровень получил название "оболочка" или, по английски - shell.

Что такое оболочка ?



Командная оболочка ( shell ) обеспечивает интерфейс между пользователем и ядром операционной системы Linux. Она является специализированным программным продуктом, который обеспечивает выполнение команд и получения результатов их выполнения, или, если совсем уж упрощенно, оболочка - это программа, которая предназначена для обеспечения выполнения других программ по желанию пользователя. Примером оболочки может быть, например, интерпретатор команд command.com операционной системы MS DOS, или оболочка bash операционных систем Unix / Linux.

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

- Интерпретация командной строки. Доступ к командам и результатам их выполнения.

- Поддержка переменных , специальных символов и зарезервированных слов.

- Обработка файлов, операций стандартного ввода и вывода.

- Реализация специального языка программирования оболочки.

    Для операцонных систем семейства Unix / Linux возможно использование нескольких различных оболочек, отличающихся свойствами и методами взаимодействия с системой. Наиболее распространенными являются

sh - оболочка Bourne , классическая оболочка для ОС Unix

bash оболочка Bourne Again (GNU Bourne-Again SHell). Пожалуй, наиболее распространенная на данный момент, оболочка в среде ОС семейства Linux.

ksh - оболочка Korn, разработанная в качестве развития оболочки Bourne с историей командной строки и возможностью редактирования команд.

csh - оболочка C, использующая синтаксис популярного языка программирования C

tcsh - версия оболочки C с интерактивным редактированием командной строки.

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

    В процессе загрузки операционных систем семейства Linux, когда выполняется переход в интерактивный режим, программа инициализации init считывает содержимое конфигурационного файла /etc/inittab, определяет перечень и характеристики терминалов, имеющихся в системе, и вызывает программу интерактивного входа getty, отображающей приглашение к входу в систему. После ввода имени пользователя и пароля, программа getty вызыает программу login, которая проверяет достоверность учетной записи, выполняет переход в домашний каталог пользователя и передает управление программе начального запуска сеанса, в качестве которой обычно используется программа оболочки пользователя, конкретная разновидность которой определяется содержимым файла /etc/passwd для данной учетной записи. Например:

user1:x:508:511::/home/user1:/bin/sh
interbase:x:510:511::/home/interbase:/bin/csh
apb:x:511:513:apb:/home/apb:/bin/bash

Как видно из содержимого файла /etc/passwd, для пользователя user1 будет запущена оболочка sh ( оболочка Bourne ), для пользователя interbase - оболочка csh (оболочка C ) и для пользователя apb - оболочка bash ( Bourne Again ). После старта оболочки, на экран выводится приглашение к вводу команд ( обычно в виде знака доллара $, если работа выполняется в контексте учетной записи обычного пользователя , или фунта # , если оболочка используется под учетной записью привилегированного пользователя root) .

При выходе из оболочки, ядро системы возвращает управление программе init, которая перезапускает процесс входа в систему и на терминале отображается приглашение к вводу имени пользователя. Выход из оболочки может быть выполнен одним из двух способов : посредством команды exit выполненной пользователем, или при получении процессом оболочки сигнала kill, отправленного ядром, например при перезагрузке системы.

Интерпретация командной строки.



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

ls -l file01 file02

содержит команду ls, опцию -l и два имени файлов file01 file02 .

При использовании нескольких опций, их можно объединять. Например, варианты следующих команд идентичны :

ls -l -d
ls -ld


Команды, являющиеся частью оболочки, называются встроенными. К таким командам относятся, например, cd, if, case и т. п. Естественно, встроенные команды могут отличаться для различных вариантов оболочек. Кроме встроенных команд, возможно использование программных модулей, представляющих собой отдельные исполняемые файлы, или файлы скриптов - текстовых файлов, содержащих последовательно выполняемые строки с командами оболочки. Некоторые скрипты могут выполняться процессами Linux, как например, планировщик задач cron, автоматически без вмешательства человека. В этом случае, возникает проблема выбора оболочки, которая должна быть запущена в качестве дочернего процесса cron для обработки команд из файла скрипта, и для ее решения принято, в первой строке, указывать используемую оболочку:

#!/bin/bash - для оболочки bash

#!/bin/sh - для оболочки sh

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



Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой "Поделиться"








В начало страницы       |       На главную страницу сайта.




Рейтинг@Mail.ru Яндекс.Метрика