この奇妙な動作の原因をどのように見つけることができますか?
~ mary@advv
$ hsdhh() a=evil
~ mary@advv
$ echo "$a"
evil
~ mary@advv
$ a=good
~ mary@advv
$ echo "$a"
evil
修正するeval "$(fasd --init auto)"
:このエラーの原因を見つけて送信しました。質問。ありがとうございます!
答え1
Zsh は各コマンドの前後にいくつかのコードを実行します。これは通常、プロンプトと端末のタイトルを更新するために使用されます。いくつかのコードはバグがあり、変数を修正したりa
(これが発生した場合にのみa
)、時には実行しないでください。
which precmd
which preexec
which zshaddhistory
print -l $precmd_functions
print -l $preexec_functions
print -l $zshaddhistory_functions
which TRAPDEBUG
trap | grep DEBUG
何が起こっているのかを理解するもう1つの方法は、次を有効にすることです。道。
~ mary@advv
$ set -x
+ …
~ mary@advv
$ a=good
+ …
~ mary@advv
$ echo "$a"
evil
表示されるコードは…
上記のHookですが、その一部が犯人であることに違いありません。
範囲を狭めることができる実験は次のとおりです。
~ mary@advv
$ a=good; echo "$a"