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行を読んでいることを確認するために開きます。出力は次のとおりです。 ここに画像の説明を入力してください。

ここではシェルに問題がなく、すべての行を読んでいることがわかります。そこから試行錯誤で解決策を見つけることができます。

localoptionsレビューが私のすべての問題を解決できることに気づきました。もう一度読んでみると、私が理解したことが間違っていることがわかりました。このオプションの機能については、上記の共有リンクをご覧ください。

ここでは、setopt localoptions関数内で実行されるように、srcすべてのオプション設定がその関数に対してローカルです。

現在動作している様子を示す写真は次のとおりです。 ここに画像の説明を入力してください。 PS->実際には私が直接理解していませんでした。 zshフォーラムの誰かが私がそこに到達するのを助けました。

私のzshバージョン: zsh バージョン

おすすめ記事