printf %s\\n "$-"
Перечислите варианты одной буквы в одной строке.
Этот параметр также может быть использован как:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Сначала отключить -f
расширение оболочки ilename, одновременно сохраняя значение $-
- если оно есть - в $1
. Далее, глобусы не возникают, и последнее +f
расширение ilename снова включается и, возможно, также отключается.
Например, если -f
расширение ilename уже было отключено при $-
первом сохранении значения для , то его сохраненное значение будет (как минимум) :
f
И поэтому, когда set
запускается снова, это работает для:
set +f -f
Что просто возвращает вас туда, откуда вы начали.
set +o
Перечислим все set
варианты таблицы оболочки (см ответа Джейсона за shopt
возможность - это то , что слово - варианты) в форме , которая является безопасной для спускаемога оболочки. Таким образом, вы также можете сделать:
state=$(set +o)
set -some -crazy -options
eval "$state"
Для сохранения, изменения и восстановления состояния параметров оболочки соответственно.
Чтобы обработать shopt
ионы и set
параметры таблицы за один раз:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Вы также можете позвонить set
без каких-либо аргументов, чтобы добавить список всех установленных на данный момент переменных оболочки - также указанных для повторного входа в оболочку. И вы можете - в bash - дополнительно добавить команду, typeset -fp
чтобы также включить все объявленные в настоящее время функции оболочки. Вы можете смешать все это вместе и eval
когда будете готовы. Вы можете даже позвонить alias
без аргументов для более того же. Это ... может покрыть это, хотя. Я предполагаю, что есть "$@"
- что вы должны были бы поместить в bash
массив сначала, я полагаю, перед тем, как делать set
.
Нет, есть также trap
. Это немного смешно. Обычно:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... просто напечатает это - моя подполочка, потому что подоболочка - это новый процесс, который получает свой собственный набор trap
s - и поэтому не наследует никаких trap
s, кроме тех, которые его родительский элемент явно проигнорировал - (например trap '' INT
) .
Тем не мение:
trap 'echo this is my trap' 0
save_traps=$(trap)
trap
ведет себя особенно, когда это первая и единственная команда, запускаемая в подоболочке подстановки команд, поскольку она воспроизводит список установленных traps
в данный момент родительских оболочек в формате, указанном для безопасного повторного входа в оболочку. И так что вы можете сделать save_traps
, то set
без аргументов - и все остальное уже было сказано - в значительной степени получить блокировку на все состояния оболочки. Возможно, вы захотите явно добавить export -p
и readonly -p
восстановить оригинальные атрибуты оболочки var.
Во всяком случае, этого достаточно.
set +o
иshopt
? (что касаетсяshopt
того, чтобы быть словом,settable
используется на странице руководства, так чтоshoptable
работает для меня)shopt
ионы, то естьstate=$(set +o;shopt -p)
Со
man
страницы:распечатает список всех включенных опций.
источник
set
иshopt
?set
гораздо более обширный: см. запись справочной страницы .shopt <option>
huponexit
). простой способ исправить этоshopt | grep on$
Чтобы перечислить все варианты:
Чтобы проверить конкретный вариант:
Возьмите вариант
verbose
в качестве примера:источник
Опции ?: В bash есть три группы опций.
Опции читаются или устанавливаются командой
set
.(Используйте эту команду для ручной:
LESS=+/'set \[--abefhkmnptuvxBCEHPT\]' man bash
)Все варианты одной буквы:
abefhkmnptuvxBCEHPT
Также параметры (которые не имеют одинарного буквенного эквивалента):
Опции читаются или устанавливаются командой
shopt
.(Прочитать руководство этой команды:
LESS=+/'shopt \[-pqsu\]' man bash'
)Список довольно длинный , но легко печатать, использование:
или аналогичный (но не равный):
Параметры , которые могут быть установлены на призывание:
(команда для ручной:
LESS=+/'^INVOCATION' man bash
)Все
set
варианты:Все
shopt
вариантыНекоторые опции, которые имеют смысл только при вызове bash:
А также (длинные варианты):
Все
set
варианты одной буквы и-ri
напечатаны с$-
.Например:
О вызове bash в качестве оболочки входа сообщается только с shopt:
Таким образом:
Опция
-n
не может быть протестирована каким-либо кодом, так как это означает: не выполнять никакого кода.Варианты печати
Лучший инструмент для перечисления параметров запущенной оболочки, либо те, которые установлены с помощью,
set
либо те, которые установлены сshopt
помощью, одинаковыshopt
. Чтобы вывести список установленных параметров:Который действует именно так
set -o
. Используйте,shopt -po
чтобы получить тот же результат, что иset +o
.Для просмотра списка покупок:
Из которых вы можете распечатать либо те, которые установлены
shopt -ps
или не установленыshopt -pu
Чтобы получить все варианты. Столько, сколько это возможно, столько длинных опций и некоторые (
-sDc
) на INVOCATION не могут быть напечатаны:Чтобы сохранить их в переменной:
И переменная может быть использована для установки всех параметров:
источник
Чтобы проверить конкретный вариант:
источник