файла file, затем завершается; при поиске file используется список
поиска $PATH.
break [n]
Выход из внутреннего for или while цикла; если указано n, то выход из n внутренних циклов.
continue [n]
Перейти к следующей итерации внутреннего for или while цикла; если указано n, то переход к
следующей итерации n-ого цикла.
cd [ <аргумент> ]
Сменить текущую директорию на директорию <аргумент>. По умолчанию используется значение HOME.
echo [ <арг> ... ]
Выводит свои аргументы в стандартный вывод, разделяя их пробелами.
eval [ <арг> ... ]
Аргументы читаются, как если бы они поступали из стандартного ввода и рассматриваются как команды,
которые тут же и выполняются.
exec [ <арг> ... ]
Аргументы рассматриваются как команды shell'а и тут же выполняются, но при этом не создается нового
процесса. В качестве аргументов могут быть указаны направления ввода-вывода и, если нет никаких других аргументов, то будет изменено лишь направление
ввода-вывода текущей программы.
exit [ n ]
Завершение выполнения shell'а с кодом завершения n. Если n опущено, то кодом завершения будет код
завершения последней выполненной команды (конец файла также приводит к завершению выполнения).
export [ <переменная> ... ]
Данные переменные отмечаются для автоматического экспорта в окружение (см. Окружение)
выполняемых команд. Если аргументы не указаны, то выводится список всех экспортируемых переменных. Имена функций не могут экспортироваться.
hash [ -r ] [ <команда> ... ]
Для каждой из указанных команд определяется и запоминается путь поиска. Опция -r удаляет все
запомненные данные. Если не указан ни один аргумент, то выводится информация о запомненных командах: hits - количество обращений shell'а к данной команде;
cost - объем работы для обнаружения команды в списке поиска; command - полное имя команды. В некоторых ситуациях происходит перевычисление запомненных
данных, что отмечается значком * в поле hits.
pwd
Выводит имя текущей директории.
read [ <переменная> ... ]
Читается из стандартного ввода одна строка; первое ее слово присваивается первой переменной, второе -
второй и т.д., причем все оставшиеся слова присваиваются последней переменной.
readonly [ <переменная> ... ]
Запрещается изменение значений указанных переменных. Если аргумент не указан , то выводится
информация обо всех переменных типа readonly.
return [ n ]
Выход из функции с кодом завершения n. Если n опущено, то кодом завершения будет код завершения
последней выполненной команды.
set [ --aefkntuvx [ <арг> ... ] ]
Команда устанавливает следующие режимы:
-a
отметить переменные, которые были изменены или созданы, как переменные окружения (см. Окружение)
-e
если код завершения команды ненулевой, то немедленно завершить выполнение shell'а
-f
запретить генерацию имен файлов
-k
все переменные с именем помещаются в окружение команды, а не только те, что предшествуют имени
команды (см. Окружение)
-n
читать команды, но не выполнять их
-t
завершение shell'а после ввода и выполнения одной команды
-u
при подстановке рассматривать неустановленные переменные как ошибки
-v
вывести вводимые строки сразу после их ввода
-x
вывести команды и их аргументы перед их выполнением
--
не изменяет флаги, полезен для присваивания позиционным переменным новых значений.
При указании + вместо - каждый из флагов устанавливает противоположный режим. Набор текущих флагов
есть значение переменной $-. <арг> - это значения, которые будут присвоены позиционным переменным $1, $2 и т.д. Если все аргументы опущены,
выводятся значения всех переменных.
shift [ n ]
Позиционные переменные, начиная с $(n+1), переименовываются в $1 и т.д. По умолчанию n=1.
test
вычисляет условные выражения (см. Дополнительные сведения. Test )
trap [ <арг> ] [ n ] ...
Команда <арг> будет выполнена, когда shell получит сигнал n (см. Сигналы). (Надо заметить, что
<арг> проверяется при установке прерывания и при получении сигнала). Команды выполняются по порядку номеров сигналов. Любая попытка установить
сигнал, игнорируемый данным процессом, не обрабатывается. Попытка прерывания по сигналу 11 (segmentation violation) приводит к ошибке. Если <арг>
опущен, то все прерывания устанавливаются в их начальные значения. Если <арг> есть пустая строка, то этот сигнал игнорируется shell'ом и
вызываемыми им программами. Если n=0, то <арг> выполняется при выходе из shell'а. Trap без аргументов выводит список команд, связанных с каждым
сигналом.
type [ <имя> ... ]
Для каждого имени показывает, как оно будет интерпретироваться при использовании в качестве
имени команды: как внутренняя команда shell'а, как имя файла или же такого файла нет вообще.
ulimit [ -f ] [ n ]
Устанавливает размер файла в n блоков; -f - устанавливает размер файла, который может быть записан
процессом-потомком (читать можно любые файлы). Без аргументов - выводит текущий размер.
umask [ nnn ]
Пользовательская маска создания файлов изменяется на nnn. Если nnn опущено, то выводится текущее
значение маски. Пример: после команды umask 755 будут создаваться файлы, которые владелец сможет читать, писать и выполнять, а все остальные - только
читать и выполнять.
unset [ <имя> ... ]
Для каждого имени удаляет соответствующую переменную или функцию. Переменные PATH, PS1, PS2 и IFS не
могут быть удалены.
wait [ n ]
Ждет завершения указанного процесса и выводит код его завершения. Если n не указано, то ожидается
завершения всех активных процессов-потомков и возвращается код завершения 0.
4.
Выполнение shell-программ
4.1. Запуск shell'а
Программа, интерпретирующая shell-программы, находится в файле /bin/sh. При запуске ее первый аргумент является именем shell-программы, остальные передаются
как позициональные параметры. Если файл, содержащий shell-программу, имеет право выполнения (x), то достаточно указания лишь его имени. Например,
следующие две команды операционной системы эквивалентны (если файл ficofl обладает указанным правом и на самом деле содержит shell-программу):
sh ficofl -d . g*и ficofl -d . g*
4.2. Выполнение
При выполнении shell-программ выполняются все подстановки. Если имя команды
совпадает с именем специальной команды, то она выполнается в рамках текущего процесса. Так же выполняются и определенные пользователем функции. Если имя
команды не совпадает ни с именем специальной команды, ни с именем функции, то порождается новый процесс и осуществляется попытка выполнить указанную команду.
Переменная PATH определяет путь поиска директории, содержащей данную команду. По умолчанию это
::/bin:/usr/ bin:/util:/dss/rk
Директории поиска разделяются двоеточиями; :: означает текущую директорию.
Если имя команды содержит символ /, значение $PATH не используется: имена, начинающиеся с / ищутся от корня, остальные - от текущей директории. Положение
найденной команды запоминается shellом и может быть опрошено командой hash.
4.3. Окружение
Окружение - это набор пар имя-значение, которые передаются выполняемой программе. Shell взаимодействует с окружением несколькими способами. При
запуске shell создает переменную для каждой указанной пары, придавая ей соответствующее значение. Если вы измените значение какой-либо из этих
переменных или создадите новую переменную, то это не окажет никакого влияния на окружение, если не будет использована команда export для связи переменной
shell'а с окружением (см. также set -a). Переменная может быть удалена из окружения командой unset (см.). Таким образом, окружение каждой из выполняемых
shell'ом команд формируется из всех неизмененных пар имя-значение, первоначально полученных shell'ом, минус пары, удаленные командой unset, плюс
все модифицированные и измененные пары, которые для этого должны быть указаны в команде export.
Окружение простых команд может быть сформировано указанием перед ней одного или нескольких присваиваний переменным. Так,