Предопределенные переменные
Предопределенные переменные содержатся в среде окружения командного процессора независимо от установок, которые может сделать пользователь в стартовых скриптах. Имена предопределенных переменных среды окружения во всех командных процессорах, кроме csh (и, в некоторых случаях, tcsh), пишутся символами верхнего регистра: PATH, USER, TERM, PS1, PS2.
В именах переменных среды окружения используются буквы латинского алфавита. пользовательские, добавленные по ходу работы переменные в скриптах принято называть именами из символов нижнего регистра для того, чтобы отличать переменные, введенные разработчиком системы, от тех, что вводит пользователь или требует прикладная программа.
В любых командных процессорах обязательно заранее определены переменные, указанные в таблице 10.5.
HOME | домашний каталог пользователя |
SHELL | текущий shell |
PS1 | вид приглашения shell'a |
PS2 | вид приглашения "продолжение команды" |
TERM | тип терминала пользователя |
USER или LOGNAME | имя пользователя |
PATH | список каталогов, в которых надо искать исполняемый файл, когда пользователь запускает программу, указывая только ее имя, но не путь. Каталоги разделяются двоеточиями |
С другой стороны, многие другие переменные определяются не во всех командных процессорах. Посмотреть список всех переменных среды окружения обычно можно по команде
set
Любой скрипт может быть вызван с аргументами, которые в скрипте называются позиционными параметрами. К аргументам с первого по девятый следует обращаться как к $1..$9. Значение $0 - это имя самого скрипта, по которому его вызвали. Один и тот же скрипт может быть вызван с разными именами, например, если с ним установлены символические связи (symbolic links).
Команда shift n (n - положительное или отрицательное смещение) позволяет двигать "окошко" $1..$9 по всему массиву аргументов скрипта вперед и назад, если аргуменов больше девяти. Shift без параметров эквивалентен shift 1. В csh shift умеет сдвигать "окно" только на одну позицию вперед.
Кроме вышеописанных переменных обычно определены следующие:
$ | номер процесса текущего shell'a |
* | все позиционные параметры |
_ | последняя вызванная команда |
1,2,..9 | один позиционный параметр |
? | число позиционных параметров |