私が理解したところ、この情報はインスタンスが~/.zshenv
起動されるたびにzsh
取得されます。
これは、次の行を使用すると~/.zshenv
無限回帰が発生することを意味します。
(echo "$$ $(date)" >> $HOME/.debug.zshenv)
...サブシェルを表すため、他のソースなどを(...)
表します。 1~/.zshenv
それでも上記の行は無害です。 AFAICT。具体的には、次のように$HOME/.debug.zshenv
新しいシェルを起動した後、1行だけが表示されます。
% zsh
明らかに~/.zshenv
、上記の行を評価してもソースは検索されません。なぜできないの?
1対応する式には$(date)
サブシェルの作成も必要です。
答え1
サブシェルの意味を間違って理解しました。サブシェルはまったく新しいプロセスではなく、既存のプロセスのフォークです。
zsh
たとえば、明示的に呼び出す場合
zsh -c 'echo "$$ $(date)" >> $HOME/.debug.zshenv'
その後、シェルは分岐して呼び出され、execve()
まったく新しいシェルを起動して再初期化します。