这就是我的内容~/.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
,所有选项设置都是该函数的本地设置。