Командная оболочка Линукс - это командный интерпретатор, который выдает пользователю интерактивное приглашение к вводу команд (командную строку) и предлагает массу разнообразных возможностей:
- Перенаправление входных и выходных потоков данных;
- Работа в фоновом режиме;
- Управление отложенными заданиями;
- Просмотр истории введенных команд;
- Встроенная справочная система;
- Дополнение командной строки;
- Режим командной строки (так называемый консольный режим).
В Red Hat Linux командная оболочка воспринимает команды с клавиатуры и обычно используется для запуска других команд и программ с помощью сценариев, написанных на языке командного интерпретатора.
Командная оболочка, которая предоставляется пользователю при входе в систему, назначается в последнем поле записи системного файла /etc/passwd. Так, в следующем примере некоему злосчастному пользователю winky в его учетной записи назначен командный интерпретатор bash:
В ОС Red Hat Linux no умолчанию используется командный интерпретатор GNU под названием bash (интерпретатор Борна); однако доступны и другие интерпретаторы: tcsh, ksh и zsh.
Чтобы использовать другую оболочку, введите ее название в командной строке. Пользователь root, при создании пользователя, может назначить ему свой интерпретатор.
Изменить командную оболочку можно воспользовавшись командой chsh (change shall); но вначале убедитесь, что этот интерпретатор установлен в вашей системе. Например, чтобы использовать командный интерпретатор tcsh, сначала с помощью команды which проверьте, что он действительно установлен в системе:
/bin/tcsh
Из данного примера видно, что оболочка tcsh установлена и находится в каталоге /bin. Кроме того, tcsh должен присутствовать в списке разрешенных командных интерпретаторов (/etc/shells). Проверьте и это:
/bin/tcsh
Можно выполнить chsh с параметром -l, чтобы вывести список действительных командных оболочек, чтобы убедиться в том, что оболочка tcsh разрешена. Поскольку tcsh установлен и присутствует в списке /etc/shells, можно командой chsh изменить командный интерпретатор:
Changing shell for winky.
Password:
Легко можно убедиться, что если ввести имя командного интерпретатора, не установленного в системе, то "chsh" выдаст сообщение об ошибке. А теперь попробуем изменить интерпретатор на существующий в системе:
Changing shell for winky.
Password:
****
Если теперь вы поинтересуетесь своей записью в файле /etc/passwd, то увидите, что вашим интерпретатором, используемым по умолчанию, является /bin/tcsh. После очередного входа в Линукс, будет работать tcsh.
Настройка среды окружения
Когда пользователь регистрируется и входит в систему, в оперативную память загружаются ряд переменных и им присваиваются значения. Эти переменные называются "переменными окружения" командного интерпретатора; они могут использоваться различными командами для получения информации о программной среде (например, о типе операционной системы, о домашнем каталоге пользователя и о его командной оболочке).
В Red Hat Linux переменные окружения помогают настроить вычислительную среду операционной системы и включают полезные спецификации и настройки; если вы начнете писать сценарии оболочки, то в них, скорее всего, вы захотите применять эти многочисленные переменные. Следующий список содержит ряд переменных окружения вместе с их описанием:
PWD - имя актуального рабочего каталога, используемого командой pwd, например, /home/winky/foo;
USER - имя пользователя, например winky;
LANG - язык, используемый по умолчанию, например English;
SHELL - название и местоположение актуальной командной оболочки, используемого в данный момент;
PATH - используемое по умолчанию местоположение исполняемых файлов, например, /bin, /usr/bin и т.д.;
LD_LIBRARY_PATH - местоположение важных программных библиотек;
TERM - переменная указывает какой терминал используется, например, vt100, это необходимо для экранных программ, например, для текстовых редакторов;
MACHINE - тип системы, архитектура системы и так далее.
У каждой оболочки может быть свой собственный набор функциональных возможностей и синтаксис языка, а также особый набор переменных окружения, используемых по умолчанию. Чтобы отобразить на экране эти среды, введем на терминале env или printenv. Например:
$env
PWD=/home/bball
HOSTNAME=thinkpad.home.org
USER=bball
MACHTYPE=i386-redhat-linux-gnu
MAIL=/var/spool/mail/bball
BASH_ENV=/nome/bball/.bashrc
LANG=en_US
DISPLAY=titanium:0
LOGNAME=bball
SHLVL=1
PATH=/usr/bin: \
SHELL=/bin/bash
HOSTTYPE=i586
HOME=/home/bball
В этом сокращенном списке показаны несколько распространенных переменных. Установка их производится при помощи файлов конфигурации, находящихся в каталогах /etc, /etc/skel или в домашнем каталоге пользователей /home. Так, используемые по умолчанию параметры оболочки bash можно найти в файлах /etc/profile и /etc/bashrc, а также в .bashrc или .bash_profile, хранящихся в домашнем каталоге.
Одной из наиболее важных переменных является "SPATH", которая определяет местоположение исполняемых файлов. Например, если вы, будучи обычным пользователем, попытаетесь выполнить команду, которая не содержится в вашей переменной $РАТН, например, команду ifconfig, то увидите что-то вроде следующего:
$**sh: ifconfig: no such command
Однако, если вам наверняка известно, что ifconfig точно есть в вашей системе, то это легко проверить с помощью whereis:
В этом примере видим, что ifconfig действительно установлен. Дело в том, что для операционной системы Red Hat Linux каталог /sbin по умолчанию не включен в $РАТН.
Одна из причин этого заключается в том, команды из каталога /sbin обычно предназначены только для пользователя root. Редактируя файл .bash_profile в своем домашнем каталоге, можно добавить каталог /sbin в свою переменную $РАТН.
Найдите в этом файле такую строку:
Можно следующим образом отредактировать этот документ (например, с помощью редактора vi) и добавить каталог s/bin:
PATH=$PATH:/sbin:$HOME/bin
Сохраните этот файл. Когда в следующий раз вы зарегистрируетесь и войдете в систему, каталог /sbin будет включен в переменную $РАТН. Чтобы пользоваться этим изменением сразу же, можно считать новые параметры из файла .bash_profile с помощью source:
$ souce .bash_profile
Теперь введем "ifconfig", не задавая полное имя пути. Некоторые команды Linux используют другие переменные среды, например, для получения информации о конфигурации системы. В частности программам связи требуется такая переменная, как BAUD_RATE, которая указывает скорость передачи данных модемом.
В качестве эксперимента с переменными среды можно модифицировать "PS1" и изменить вид приглашения. Если вы работаете с bash, то для изменения приглашения можно воспользоваться встроенной командой export.
Допустим, что используемое по умолчанию параметры ввода оболочки выглядят так:
[winky@shuttle2 ~]$
Изменим ее вид с помощью PS1 следующим образом:
Нажимаем на клавишу Enter, скорее всего, видим:
Использование командной оболочки для поиска и навигации
В ОС Линукс для навигации предназначена специальная утилита cd. Чтобы перейти в домашний каталог, достаточно ввести:
Для достижения того же самого результата можно использовать переменную среды $НОМЕ:
В Linux включены несколько команд из проекта GNU, которые можно использовать для проведения поиска в файловой системе:
whereis commands – возвращает местоположение команды и ее справочной страницы;
whatis commands – возвращает однострочное резюме из справочной страницы команды;
locate file – возвращает местоположение всех файлов, удовлетворяющих условиям поиска (можно применять метасимволы);
apropos subject – возвращает список команд относящихся к данной теме.