|
Библиотека: Linux.
Справочник, К. Рейчард, П. Фолькердинг
Глава 6. Интерпретаторы командной строки
Вы не можете использовать Linux, не запустив интерпре
татор командной строки — программу, обеспечивающую интерфейс
между пользователем и операционной системой. Те действия, которые,
на ваш взгляд, выполняются операционной системой, зачастую выполняются
интерпретатором командной строки. Интерпретатор командной строки
получает от вас команды, интерпретирует их и передает нужные инструкции
ядру операционной системы. Кроме того, интерпретатор командной строки
имеет собственный набор команд (некоторые из них описаны в главе 5
как команды операционной системы — для вас как для пользователя
разница небольшая), а также позволяет выполнять сценарии.
Большинство дистрибутивов Linux включают в себя шесть
или семь различных интерпретаторов командной строки, но обычно люди
предпочитают устанавливаемый по умолчанию интерпретатор Bourne Again
shell (bash), созданный Free Software Foundation, клон популярного
интерпретатора Bourne shell, используемого во многих коммерческих
UNIX-системах. Некоторые пользователи вместо bash используют
C shell (csh) или его усовершен ствованную версию —
tcsh. Когда вы устанавливаете Linux, вам обычно нужно ответить
на вопрос, какие интерпретаторы командной строки вы хотите установить.
Имеется достаточно много различных интерпретаторов командной строки,
работающих с Linux, например ash и zsh. Для того чтобы
получить список установленных в вашей
Переменные интерпретаторов командной строки
системе интерпретаторов командной строки, используйте
следующую команду1 :
$ chsh -l
/bin/sh
/bin/bash
/bin/csh
/bin/tcsh
...
Чтобы изменить ваш основной интерпретатор командной
строки, используйте команду
$ chsh -s /bin/csh
или2
$ exec /bin/csh
Мы не будем здесь обсуждать использование интерпрета
торов командной строки — в вашей системе имеется достаточно
документации на эту тему. Вместо этого мы опишем некоторые переменные
окружения, используемые интерпретаторами командной строки.
Переменные интерпретаторов командной строки
Эти переменные устанавливаются интерпретатором командной
строки при запуске. Они используются в различных целях, но чаще
всего — в сценариях.
1 Некоторые версии команды chsh
не имеют параметра -l. В таком случае вы можете получить
список доступных интерпретаторов командной строки, проверив, какие
из файлов, перечисленных в /etc/shells, имеются в вашей системе. —
Примеч. перев.
2 Вторая команда, в отличие от первой,
изменит основной интерпретатор командной строки только для текущего
сеанса работы. — Примеч. перев.
Переменная Значение
IFS Эта переменная содержит символы, используемые
интерпретатором командной строки для разделения слов в строке. Значение
по умолчанию — space-tab-newline'
PATH Эта переменная содержит путь поиска команд.
Ее значением является список каталогов, отделенных друг от друга
двоеточиями. В этих каталогах интерпретатор командной строки производит
поиск команд, которые вы вводите. Значение пути поиска по умолчанию
зависит от конкретной системы и устанавливается администратором
HOME Эта переменная содержит домашний каталог пользователя;
ее значения используются в качестве аргумента по умолчанию команды
cd
CDPATH Эта переменная содержит путь поиска для команды
cd. Значением этой переменной является список каталогов,
отделенных друг от друга двоеточиями.
В этих каталогах интерпретатор командной строки производит поиск
каталога, указанного в качестве аргумента команды cd
ENV Если значение этой переменной установлено, то
при запуске сценария bash использует в качестве конфигурацион
ного файла указанный в ней файл. Значение переменной может содержать
символы подстановки, подстановку ко
Переменные интерпретаторов командной строки
Переменная Значение
манд и арифметическую подстановку. Значение переменной
PATH не используется при поиске файла с полученным именем
MAIL Если эта переменная содержит имя файла, а значение
переменной MAILPATH не установлено, то bash воспринимает
указанный файл в качестве почтового ящика и информирует пользователя
о поступлении новой почты
MAILCHECK Эта переменная содержит время (в секундах),
через которое bash проверяет наличие новой почты. Значение
по умолчанию — 60 секунд. Проверка наличия почты производится
перед выводом нового приглашения командной строки. Если значение
переменной MAILCHECK не установлено, то проверка наличия почты не
производится
MAILPATH Эта переменная содержит список полных имен
файлов, разделенных двоеточиями, которые воспринимаются интерпретатором
командной строки как почтовые ящики. Могут быть указаны сообщения,
выводимые при поступлении почты. Сообщение отделяется от имени файла
знаком
MAIL_WARNING Если значение этой переменной установлено
и к почтовому ящику был доступ после последней его проверки интерпретатором
командной строки, выводится предупреждение: The mail in
Переменная Значение
mailfile has been read (Почта в почтовом
ящике была прочитана )
PS1 Основное приглашение командной строки. Значение
по умолчанию — bash\$
PS2 Дополнительное приглашение командной строки;
используется многими приложениями. Значение по умолчанию —
>
PS3 Приглашение для команды select
PS4 Эта переменная содержит символ, выводимый перед
каждой командой в режиме трассировки
HISTSIZE Количество команд, сохраняемых в истории
командной строки. По умолчанию — 500
HISTFILE Эта переменная содержит имя файла, в котором
хранится история командной строки. Значение по умолчанию —
~/.bash_history
HISTFILESIZE Максимальное количество строк в файле
истории командной строки. По умолчанию — 500
IGNOREEOF Значение этой переменной определяет реакцию
интерпретатора командной строки на получение командной строки, состоящей
только из символа конца файла. Если значением переменной является
число, то оно определяет, сколько подряд таких строк должен полу
Переменные интерпретаторов командной строки
Переменная Значение
чить интерпретатор командной строки, чтобы завершить
сеанс работы1. Если значение переменной установлено,
но не является числом, то используется значение по умолчанию — 10.
Если значение переменной не установлено, то символ конца файла вызывает
завершение сеанса работы2. Если запущенный интерпретатор
командной строки работает не в интерактивном режиме, то значение
переменной IGNOREEOF игнорируется
TMOUT Эта переменная содержит время (в секундах),
которое интерпретатор командной строки ожидает ввода от пользователя
после отображения приглашения командной строки. Если за указанное
время ввод не поступает, интерпретатор командной строки завершает
сеанс работы. Если переменная содержит значение 0, то время
неактивности пользователя не подсчитывается
FIGNORE Эта переменная содержит список суффиксов
файлов, разделенных двоеточиями. Файлы с такими суффиксами игнорируются
при выполнении операции автоматического завершения имени файла.
Например, переменная FIGNORE может иметь значение .o:~
1 Иными словами, сколько раз подряд должен
пользователь нажать
Ctrl-D, чтобы выйти из системы. — Примеч. перев.
2 Это означает, что если вы нажмете Ctrl-D
(например, для завершения работы с программой bc) не один
раз, а два (случайно!), то вам придется входить в систему заново. —
Примеч. перев.
|