setopt 在 .zshrc 中不起作用。有人能告诉我为什么吗?

setopt 在 .zshrc 中不起作用。有人能告诉我为什么吗?

这就是我的内容~/.zshrc(实际上是来自我的文件~/.zshrc,见下文)。

#CHANGING DIRECTORIES
setopt CD_SILENT
setopt CDABLE_VARS
setopt AUTO_CD

#COMPLETION
setopt recexact autolist listambiguous menucomplete hashlistall globcomplete completeinword completealiases autoparamslash  

#EXPANSION AND GLOBBING
setopt nomatch badpattern globstarshort rcexpandparam extendedglob nocaseglob numericglobsort markdirs

#HISTORY
SAVEHIST=8192
HISTSIZE=$(( 1.2 * SAVEHIST ))
HISTFILE="$ZDOTDIR/.zhistory" 
setopt nohistbeep extendedhistory histverify sharehistory histallowclobber histreduceblanks histfcntllock histignoredups histignorealldups histsavenodups

#SCRIPTS AND FUCNTIONS
setopt multios aliasfuncdef localoptions localloops localtraps cbases cprecedences

#MISC
setopt transientrprompt nocheckjobs ignoreeof nobeep nolistbeep nonotify noclobber interactivecomments

除了设置之外没有任何作用HISTFILE

% setopt
interactive
monitor
shinstdin
zle
% ls .zhistory
.zhistory

但是,如果我setopt autocd在终端内部使用,它适用于该会话。这是一个例子:

% setopt
interactive
monitor
shinstdin
zle
% setopt autocd
% setopt
autocd
interactive
monitor
shinstdin
zle

如果我添加echo I AM BEING LOADED, EVEN THEN I FAIL TO LOAD ANY SETOPT COMMANDS到这一点.zshrc,在启动时,我确实会看到:

I AM BEING LOADED, EVEN THEN I FAIL TO LOAD ANY SETOPT COMMANDS
% setopt
interactive
monitor
shinstdin
zle

这是 GNU/Linux amd64 上的 zsh 5.9 的情况。

该文件实际上来源于:

# FUNCTOIN TO SOURCE READABLE FILES
function src {
[[ -r "$1" ]] && source "$1"
}

if [[ -d ~/.config/.zshell/zload.d/ ]]; then
for FileToLoad in ~/.config/.zshell/zload.d/*.zsh(n); do
src "$FileToLoad"
done
unset FileToLoad
fi

unset -f src

答案1

抱歉大家,我误解了 的用法setopt localoptions。请注意,我正在学习,因此可能会发生错误。这就是我遇到这个问题的原因。那是一个愚蠢的错误,哈哈

什么都不起作用,这让我很生气。因此,我决定重新审视基础知识https://zsh.sourceforge.io/Doc/Release/Options.html

调试我自己编写的解决方案。我打开setopt xtrace看看这些行是否正在被读取。这是输出: 在此输入图像描述

您可以在这里看到 shell 没有任何问题,并且正在读取每一行。从那里反复试验可以引导您找到解决方案。

一旦我意识到评论localoptions可以解决我所有的问题。我又去读了一遍,发现我的理解是错误的。要了解该选项的作用,您可以访问上面的共享链接。

在这里,正如setopt localoptions在函数内部完成的那样src,所有选项设置都是该函数的本地设置。

这是一张照片,显示它现在正在工作: 在此输入图像描述 PS-> 实际上我自己并没有弄清楚,zsh 论坛中的某人帮助我到达那里。

我的 zsh 版本: zsh版本

相关内容