Работа с командной оболочкой Linux

Командная оболочка Линукс - это командный интерпретатор, который выдает пользователю интерактивное приглашение к вводу команд (командную строку) и предлагает массу разнообразных возможностей:

  • Перенаправление входных и выходных потоков данных;
  • Работа в фоновом режиме;
  • Управление отложенными заданиями;
  • Просмотр истории введенных команд;
  • Встроенная справочная система;
  • Дополнение командной строки;
  •  Режим командной строки (так называемый консольный режим).

В Red Hat Linux командная оболочка воспринимает команды с клавиатуры и обычно используется для запуска других команд и программ с помощью сценариев, написанных на языке командного интерпретатора.

Командная оболочка, которая предоставляется пользователю при входе в систему, назначается в последнем поле записи системного файла /etc/passwd. Так, в следующем примере некоему злосчастному пользователю winky в его учетной записи назначен командный интерпретатор bash:

winky:x:502:50::/home/winky:/bin/bash

В ОС Red Hat Linux no умолчанию используется командный интерпретатор GNU под названием bash (интерпретатор Борна); однако доступны и другие интерпретаторы: tcsh, ksh и zsh.

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

Изменить командную оболочку можно воспользовавшись командой chsh (change shall); но вначале убедитесь, что этот интерпретатор установлен в вашей системе. Например, чтобы использовать командный интерпретатор tcsh, сначала с помощью команды which проверьте, что он действительно установлен в системе:

$ which tcsh
/bin/tcsh

Из данного примера видно, что оболочка tcsh установлена и находится в каталоге /bin. Кроме того, tcsh должен присутствовать в списке разрешенных командных интерпретаторов (/etc/shells). Проверьте и это:

$ grep tcsh /etc/shells
/bin/tcsh

Можно выполнить chsh с параметром -l, чтобы вывести список действительных командных оболочек, чтобы убедиться в том, что оболочка tcsh разрешена. Поскольку tcsh установлен и присутствует в списке /etc/shells, можно командой chsh изменить командный интерпретатор:

$chsh
Changing shell for winky.
Password:

Легко можно убедиться, что если ввести имя командного интерпретатора, не установленного в системе, то "chsh" выдаст сообщение об ошибке. А теперь попробуем изменить интерпретатор на существующий в системе:

$ chsh -s /bin/tcsh
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, то увидите что-то вроде следующего:

$ ifconfig
$**sh: ifconfig: no such command

Однако, если вам наверняка известно, что ifconfig точно есть в вашей системе, то это легко проверить с помощью whereis:

$ whereis ifconfig

В этом примере видим, что ifconfig действительно установлен. Дело в том, что для операционной системы Red Hat Linux каталог /sbin по умолчанию не включен в $РАТН.

Одна из причин этого заключается в том, команды из каталога /sbin обычно предназначены только для пользователя root. Редактируя файл .bash_profile в своем домашнем каталоге, можно добавить каталог /sbin в свою переменную $РАТН.

Найдите в этом файле такую строку:

PATH=$PATH:$HOME/bin

Можно следующим образом отредактировать этот документ (например, с помощью редактора 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 следующим образом:

$ PS1='SOSTYPE r00lz ->'

Нажимаем на клавишу Enter, скорее всего, видим:

linux-gnu r00lz ->

Использование командной оболочки для поиска и навигации

В ОС Линукс для навигации предназначена специальная утилита cd. Чтобы перейти в домашний каталог, достаточно ввести:

$cd

Для достижения того же самого результата можно использовать переменную среды $НОМЕ:

$cd$HOME

В Linux включены несколько команд из проекта GNU, которые можно использовать для проведения поиска в файловой системе:
whereis commands – возвращает местоположение команды и ее справочной страницы;
whatis commands – возвращает однострочное резюме из справочной страницы команды;
locate file – возвращает местоположение всех файлов, удовлетворяющих условиям поиска (можно применять метасимволы);
apropos subject – возвращает список команд относящихся к данной теме.