[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]

Руководство пользователя: Операционная система и устройства


Создание псевдонимов команд в оболочке Korn (POSIX)

Оболочка Korn (другое название - POSIX) позволяет создавать псевдонимы команд. Команда alias определяет псевдоним с помощью оператора Имя=Строка. Если вы указываете псевдоним в качестве первого слова командной строки, то оболочка ksh проверяет, не обрабатывается ли уже псевдоним с тем же именем. Если да, то ksh не заменяет имя псевдонима. Если нет, то ksh заменяет имя псевдонима на указанное значение.

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

Если последний символ значения псевдонима - пробел, то при подстановке псевдонима оболочка будет проверять также следующее слово. С помощью псевдонимов вы можете переопределять встроенные команды, но не зарезервированные слова. Определения псевдонимов не наследуются при новом вызове ksh. Однако если вы укажете alias -x, то псевдоним будет действителен в сценариях, инициализированных по имени и не запускающих отдельную оболочку. Для экспорта определения псевдонима и предоставления доступа к нему дочерним процессам укажите alias -x и определение псевдонима в файле описания среды.

Для создания, просмотра и экспорта псевдонимов служит команда alias, для удаления - команда unalias.

Формат команды создания псевдонима следующий:

alias Имя=Строка

где Имя - это имя псевдонима, а Строка - его значение.

Следующие экспортированные псевдонимы предопределены в оболочке Korn, но могут быть отменены или заменены. Рекомендуется не изменять их, поскольку это может помешать другим пользователям, работающим с оболочкой ksh.

autoload='typeset -fu'
false='let 0'
functions='typeset -f'
hash='alias -t'
history='fc -l'
integer='typeset -i'
nohup='nohup '
r='fc -e -'
true=':'
type='whence -v'

Псевдонимы не поддерживаются в неинтерактивных вызовах оболочки Korn (ksh); например, в сценарии оболочки или в команде ksh с опцией -c:

ksh -c alias

Дополнительная информация о создании псевдонимов приведена в разделе Создание псевдонима команды (Создание псевдонима команды (команда alias)) и в описании команды alias книги AIX 5L Version 5.1 Commands Reference.

Псевдонимы-следы

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

Команда set -h включает отслеживание команд, что означает, что при каждом обращении к команде оболочка создает соответствующий псевдоним-след. После сброса переменной PATH это значение становится неопределенным.

Отслеживание команд и создание следов продолжается, поэтому при следующем обращении к команде это значение вновь будет определено. Псевдонимы-следы компилируются в оболочке.

Замена тильды

После того, как оболочка заменит псевдонимы на соответствующие значения, она проверит каждое слово, не начинается ли оно с тильды (~) без кавычек. При обнаружении такого слова оболочка сравнит символы в этом слове до первой косой черты (/) с именами пользователей в файле /etc/passwd. Если оболочка найдет соответствие, то она заменит тильду и имя на начальный каталог соответствующего пользователя. Это процесс называется заменой тильды.

Если соответствие не будет найдено, то исходный текст останется без изменений. Кроме того, оболочка Korn выполняет специальные замены, если тильда (~) является единственным символом в слове или за ней стоит знак плюс (+) или дефис (-):

~ Символ будет заменен на значение переменной HOME.
~+ Символы будут заменены на значение переменной $PWD (полный путь к текущему каталогу).
~- Символы будут заменены на значение переменной $OLDPWD (полный путь к предыдущему каталогу).

Кроме того, оболочка пытается заменить тильду (~), когда значение параметра присвоения переменной начинается с тильды.


[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]