set -o 和 set +o 的输出有什么区别

set -o 和 set +o 的输出有什么区别

当我使用时set -o

❯ set -o
noaliases             off
aliasfuncdef          off
allexport             off
noalwayslastprompt    off
alwaystoend           on
appendcreate          off
noappendhistory       off
autocd                on
autocontinue          off
noautolist            off
noautomenu            off
autonamedirs          off
noautoparamkeys       off
...

当我使用时set +o

❯ set +o
set +o noaliases
set +o aliasfuncdef
set +o allexport
set +o noalwayslastprompt
set -o alwaystoend
set +o appendcreate
set +o noappendhistory
set -o autocd
set +o autocontinue
set +o noautolist
set +o noautomenu
...

set -o使用开/关并set +o使用+o/-o。

我可以看到相似之处,但为什么它使用+o/-o

答案1

有些事情只是因为它们本来就是这样:有人决定它会是这样。

If -o is supplied with no option-name, the values of the
current  options are printed.  If +o is supplied with no
option-name, a series of set commands  to  recreate  the
current  option  settings  is  displayed on the standard
output.

如果您在+oor后跟-o一个参数,则-+具有不同的含义。

相关内容