Оболочка Korn - это интерактивный
интерпретатор и командный язык программирования. Он полностью
соответствует международному стандарту интерфейса переносимых операционных
систем (POSIX). POSIX - это стандарт, разработанный для
обеспечения переносимости приложений на различные платформы на уровне
исходного текста. Функции POSIX реализованы в оболочке Korn. В
оболочке Korn (ее также называют оболочкой POSIX) поддерживается большинство
функций оболочек Bourne и C, а также возможности по перенаправлению
ввода-вывода, подстановке значений переменных и имен файлов. Кроме
того, в ней предусмотрено несколько дополнительных команд и средств
программирования:
Вычисление арифметических выражений | Оболочка Korn (POSIX) позволяет вычислять целочисленные арифметические выражения с помощью встроенной команды let. В выражениях могут применяться любые системы счисления от 2 до 36. Дополнительная информация об этой команде приведена в разделе Арифметические вычисления в оболочке Korn (POSIX). |
Хронология команд | Оболочка Korn (POSIX) сохраняет текст всех введенных команд в специальном файле. С помощью текстового редактора можно изменять содержимое этого файла хронологии и повторно выполнять нужные команды. Дополнительная информация о функции хронологии команд приведена в разделе Хронология команд оболочки Korn (POSIX) . |
Создание подчиненных процессов | Параллельные процессы позволяет запускать программы в фоновом режиме и обмениваться информацией с ними. |
Редактирование | В оболочке Korn (POSIX) предусмотрены встроенные функции редактирования командной строки. Поддерживается эмуляция редакторов emacs, gmacs и vi. Дополнительная информация об этой функции приведена в разделе Встроенный редактор оболочки Korn (POSIX). |
В этом разделе обсуждаются следующие вопросы:
Совокупность всех переменных (вместе с их значениями), известных команде на момент начала ее выполнения, образует так называемую среду. В эту среду входят как переменные, которые команда наследует от своего родительского процесса, так и переменные, указанные в виде ключевых слов в командной строке. Существует несколько способов взаимодействия оболочки и среды. При запуске оболочка просматривает среду, создает для каждого найденного имени параметр, которому она присваивает соответствующее значение, и помечает его для экспорта. Команды, выполняемые из оболочки, полностью наследуют среду.
Если вы измените или создадите новые параметры оболочки с помощью команды export или typeset -x, то измененные (новые) параметры станут частью среды. Соответственно, среда каждой выполняемой команды состоит из всех переменных, первоначально унаследованных оболочкой (в дальнейшем они могли быть изменены), с учетом изменений, внесенных с помощью команд export и typeset -x. Команда может изменять значения переменных, но для того, чтобы эти изменения остались в силе для ее дочерних оболочек и процессов, все измененные переменные должны быть экспортированы.
Для того чтобы изменить среду конкретной команды или функции, можно задать необходимые изменения в командной строке непосредственно перед именем этой команды или функции. Эти изменения должны быть заданы в форме идентификатор=значение. Поэтому для выполняемой команды следующие выражения равносильны:
TERM=450 команда аргументы
(export TERM; TERM=450; команда аргументы)
Если установлен флаг -k, то в среду будут помещены все параметры, даже если они указаны после имени команды. Следующая последовательность команд сначала выдает строку a=b c, а затем строку c.
echo a=b c set -k echo a=b c
Примечание: Эта возможность реализована только для совместимости со сценариями, написанными для ранних версий оболочек. Настоятельно не рекомендуется применять ее в новых сценариях.
Оболочку Korn можно запустить с помощью команды ksh или psh (оболочка POSIX).
Если оболочка будет запущена c помощью команды exec и первым символом аргумента 0 ($0) будет минус (-), то будет предполагаться, что это оболочка входа в систему. В этом случае сначала будут выполнены команды из файла /etc/profile, а затем команды либо из файла .profile в текущем каталоге, либо из файла $HOME/.profile, если хотя бы один из них существует. Затем оболочка выполнит команды из файла, указанного в переменной среды ENV, если он существует.
Если при запуске оболочки Korn (POSIX) будет указан параметр файл [параметр], то оболочка выполнит файл сценария, указанный в параметре файл, с параметрами параметр. Файл сценария должен быть доступен для чтения; все значения setuid и setgid игнорируются. Затем оболочка выполнит команды.
Примечание: Не указывайте файл сценария с флагами -c и -s.
Дополнительная информация о позиционных параметрах приведена в разделе Подстановка параметров в оболочке Korn (POSIX).
В интерактивном режиме перед чтением очередной команды оболочка выдает в качестве приглашения значение параметра PS1. Если после ввода символа новой строки оболочке потребуется дополнительная входная информация для выполнения команды, то она выдаст дополнительное приглашение - значение параметра PS2.
Оболочка Korn (POSIX) сохраняет текст команд, введенных с терминала, в файле хронологии. С помощью переменной HISTFILE можно задать имя этого файла. Если переменная HISTFILE не определена, или в указанный файл запрещена запись, то применяется файл хронологии $HOME/.sh_history. Если файл хронологии не существует и оболочка Korn не может создать его, или если он существует, но оболочке Korn не разрешена запись в него, то будет применяться временный файл хронологии. Все экземпляры оболочки пользуются одним и тем же файлом хронологии.
По умолчанию оболочка Korn (POSIX) сохраняет текст последних 128 команд, введенных с терминала. Размер файла хронологии (файла, указанного в переменной HISTSIZE) не ограничен, но если он будет очень большим, на запуск оболочки может потребоваться больше времени, чем обычно.
С помощью встроенной команды fc можно просматривать и изменять содержимое файла хронологии. Для выбора части файла или редактирования строки укажите номер или начальные символы команды. Вы можете указать как одну, так и несколько команд.
Если в команде fc не задан редактор, то будет применяться редактор, указанный в переменной FCEDIT. Если переменная FCEDIT не определена, то применяется редактор /usr/bin/ed. По окончании работы с редактором измененные команды будут напечатаны и запущены.
Для того чтобы повторить последнюю команду, не запуская редактор, нужно в качестве редактора указать минус (-). В этом случае можно изменить выполняемую команду с помощью параметра старая строка=новая строка. Например, если r - псевдоним команды fc -e -, то команда r rm=cp c повторит последнюю введенную команду, добавив в ее начало символ c и заменив первое вхождение строки rm на строку cp.
Дополнительная информация о работе с командой оболочки history приведена в разделе Просмотр ранее введенных команд (команда history) и описании команды fc в AIX 5L Version 5.1 Commands Reference.