Antworten:
In zsh
können Sie die setopt
aktivierten und unsetopt
nicht aktivierten Optionen anzeigen:
$ setopt
autocd
histignorealldups
interactive
monitor
sharehistory
shinstdin
zle
$ unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
autocd
autocontinue
noautolist
noautomenu
autonamedirs
.....
In bash
können Sie verwenden shopt -p
.
set -o
für die vollständige Liste verwenden.
Benutz einfach:
[[ -o extended_glob ]]
Das funktioniert auch in bash
, aber nur für die von gesetzten Optionen set -o
, nicht für die von gesetzten shopt
. zsh
hat nur einen Satz von Optionen, die entweder mit setopt
oder eingestellt werden können set -o
.
Genau wie bei bash
(oder jeder POSIX-Shell) können Sie auch die aktuellen Optionseinstellungen vornehmen set -o
oder set +o
anzeigen.
Das zsh/parameter
Modul, das Teil der Standardverteilung ist, stellt ein assoziatives Array bereit options
, das angibt, welche Optionen aktiviert sind.
if [[ $options[extended_glob] = on ]]; then …
Bei Optionen mit einem Alias aus einem Buchstaben (was nicht der Fall ist extended_glob
) können Sie auch prüfen $-
.
Beachten Sie, dass es selten sinnvoll ist, zu testen, welche Optionen aktiviert sind. Wenn Sie eine Option in einem Code aktivieren oder deaktivieren müssen, fügen Sie diesen Code in eine Funktion ein und legen Sie die local_options
Option fest. Sie können das emulate
eingebaute Programm aufrufen, um die Optionen auf einen Standardzustand zurückzusetzen.
my_function () {
setopt extended_glob local_options
}
another_function () {
emulate -L zsh
setopt extended_glob
}
setopt
nur die Optionen gedruckt werden, die für diesen Emulationsmodus nicht standardmäßig aktiviert sind.