8

如何查看所有 zsh 设置的当前值?

例如,我目前没有设置 HISTSIZE 和 SAVEHIST,所以什么env | grep HIST也不set | grep HIST显示。那么我怎样才能看到正在使用的默认值呢?

4

3 回答 3

10

除了解析文档或源代码外,没有其他选项可以获取未定义变量的默认值。

HISTSIZE并且SAVEHIST不是设置,它们是特殊变量。有一种方法可以列出所有变量,但我不知道如何列出那些特殊并用作设置的变量。

为了帮助您列出作为变量实现的参数,有zsh/parameter模块(zmodload zsh/parameter加载它)。它有一个关联数组$parameters,其中键是变量名,值是变量类型描述。两者HISTSIZESAVEHIST出现在那里integer-specialHISTCHARS在那里显示为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

如果您想查看非默认设置:

如果没有提供参数,则打印当前设置的所有选项的名称。选择该形式是为了最大限度地减少与当前仿真的默认选项的差异(默认仿真是本机 zsh,如 zshoptions(1) 所示)。默认情况下为仿真打开的选项仅在关闭时显示前缀 no,而其他选项不显示前缀 no 且仅在打开时显示。除了用户从默认状态更改的选项外,任何由 shell 自动激活的选项(例如 SHIN_STDIN 或 INTERACTIVE)都将显示在列表中。格式由选项 KSH_OPTION_PRINT 进一步修改,但是在这种情况下,选择带或不带 no 前缀的选项的基本原理保持不变。

使用它也很有意义:

# unsetopt | grep hist
noappendhistory
cshjunkiehistory
histallowclobber
nohistbeep
histexpiredupsfirst
histfindnodups
histignoredups
histlexwords
histnofunctions
nohistsavebycopy
histsubstpattern
sharehistory

如果没有提供参数,则打印当前未设置的所有选项的名称。

或者只是按照帮助和使用

# 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

注意使用该选项时的输出setoptunsetopt匹配。kshoptionprint

于 2012-08-12T04:00:31.297 回答
3

显示当前值,无论您是否设置了它(在这种情况下它显示默认值):

➜  ~ echo $SAVEHIST
10000
➜  ~ echo $HISTSIZE 
10000
于 2016-03-12T19:21:18.063 回答
0

我不知道你......(我的意思是,我确实使用.prezto),但这是进入时得到的“自动完成” setoptTAB......

在此处输入图像描述

这告诉我有用的东西,比如..

-- zsh options (set) -- noaliases noautoresume nohashdirs nohistverify nonomatch ...

-- zsh options (unset) -- allexport cshjunkiehistory hashexecutablesonly kshglob nullglob singlecommand ...

于 2015-07-24T12:30:45.190 回答