Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 3: Среда окружения Bash | Вперед |
Подробнее о параметрах Bash
Список параметров
Мы уже обсуждали несколько параметров командной оболочки Bash, которые полезно использовать для отладки скриптов. В этом разделе мы рассмотрим параметры Bash подробнее.
Укажите в команде set параметр -o
с тем, чтобы
увидеть все установленные для командной оболочки параметры (on -
параметр включен, off - параметр выключен):
willy:~> set -o allexport off braceexpand on emacs on errexit off hashall on histexpand on history on ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off posix off privileged off verbose off vi off xtrace off
Описание каждого параметра смотрите в документации по Bash, в разделе Shell Built-in Commands → The Set Built-in ( Встроенные команды командной оболочки → Настройка встроенных команд). У многих параметров есть их односимвольные сокращения: например, установка параметра xtrace эквивалентна выполнению команды set -x
.
Изменение параметров
Параметры командной оболочки могут по умолчанию устанавливаться при вызове командной оболочки, либо могут устанавливаться в процессе работы оболочки. Их можно также вставлять в конфигурационные файлы, определяющие ресурсы командной оболочки.
Следующая команда выполняет скрипт в режиме, совместимом с POSIX:
willy:~/scripts> bash --posix script.sh
В случае временного изменения текущей настройки среды или при использовании параметра в скрипте, предпочтительнее использовать команду set. Для включения параметра укажите "-" (тире), а для его отключения - "+":
willy:~/test> set -o noclobber willy:~/test> touch test willy:~/test> date > test bash: test: cannot overwrite existing file willy:~/test> set +o noclobber willy:~/test> date > test
В приведенном выше примере демонстрируется использование параметра noclobber
, с помощью которого предотвращается перезапись уже существующих файлов в случае использования операции перенаправления. То же самое можно сделать с помощью односимвольных параметров, например, с помощью параметра -u
, в результате чего,
если переменной не задано значение, то обращение к ней будет рассматриваться как ошибка, и если такая ошибка встретится в неинтерактивной командной оболочке, произойдет выход из оболочки:
willy:~> echo $VAR willy:~> set -u willy:~> echo $VAR bash: VAR: unbound variable
Этот параметр также полезен для обнаружения неправильного присваивания значений переменным: та же самая ошибка возникнет, например, в случае, если символьная строка присваивается переменной, которая была явно объявлена как переменная для хранения только целочисленных значений.
В последнем примере, приведенном далее, демонстрируется использование параметра noglob
, при установке которого запрещено осуществлять подстановку для специальных символов:
willy:~/testdir> set -o noglob willy:~/testdir> touch * willy:~/testdir> ls -l * -rw-rw-r-- 1 willy willy 0 Feb 27 13:37 *
Предыдущий раздел: | Оглавление | Следующий раздел: |
Алиасы | Подводим итог главы 3 |