Rob*_*ark 7 default zsh environment-variables built-in
如何查看所有zsh设置的当前值?
例如,我目前没有设置HISTSIZE和SAVEHIST,所以env | grep HIST并set | grep HIST没有显示任何内容.那么我如何才能看到正在使用的默认值?
除解析文档或源代码外,没有选项可以获取未定义变量的默认值.
HISTSIZE并且SAVEHIST不是设置,它们是特殊变量.有一种方法可以列出所有变量,但我知道无法列出那些特殊的变量并用作设置.
为了帮助您列出作为变量实现的参数,有zsh/parameter模块(zmodload zsh/parameter加载它).它有一个关联数组$parameters,其中键是变量名,值是变量类型描述.双方HISTSIZE并SAVEHIST出现在那里的integer-special.HISTCHARS出现在那里scalar-special.请注意,虽然这在下面RANDOM显示为HISTSIZE:integer-special,因此您不能使用它来获取用作选项的特殊变量.但是,你可以随时使用PARAMETERS USED BY THE SHELL的部分man zshparam.
我不知道任何允许您确定这些参数的默认值的选项,除了解析文档或源代码.
# setopt | grep hist
nobanghist
extendedhistory
histfcntllock
histignorealldups
histignorespace
histnostore
histreduceblanks
histsavenodups
histverify
incappendhistory
Run Code Online (Sandbox Code Playgroud)
如果要查看非默认设置:
如果未提供参数,则打印当前设置的所有选项的名称.选择表单以便最小化与当前仿真的默认选项的差异(默认仿真是本机zsh,如zshoptions(1)中所示).默认情况下为仿真打开的选项显示前缀为no,如果它们关闭,而其他选项显示时没有前缀no,仅当它们打开时.除了用户从默认状态更改的选项之外,shell自动激活的任何选项(例如,SHIN_STDIN或INTERACTIVE)都将显示在列表中.格式由选项KSH_OPTION_PRINT进一步修改,但是在这种情况下,选择带或不带前缀的选项的基本原理保持不变.
使用它也是有意义的:
# unsetopt | grep hist
noappendhistory
cshjunkiehistory
histallowclobber
nohistbeep
histexpiredupsfirst
histfindnodups
histignoredups
histlexwords
histnofunctions
nohistsavebycopy
histsubstpattern
sharehistory
Run Code Online (Sandbox Code Playgroud)
如果未提供参数,则打印当前未设置的所有选项的名称.
或者只需按照帮助和使用
# setopt kshoptionprint
# setopt | grep hist
noappendhistory off
nobanghist on
cshjunkiehistory off
extendedhistory on
histallowclobber off
nohistbeep off
histexpiredupsfirst off
histfcntllock on
histfindnodups off
histignorealldups on
histignoredups off
histignorespace on
histlexwords off
histnofunctions off
histnostore on
histreduceblanks on
nohistsavebycopy off
histsavenodups on
histsubstpattern off
histverify on
incappendhistory on
sharehistory off
Run Code Online (Sandbox Code Playgroud)
请注意,使用该选项时输出setopt和unsetopt匹配kshoptionprint.