PS1
を持っています これは、1でない場合に、SHLVLを表示して、サブシェルにいるかどうかをすばやく確認します。これは、GNOMEを使用している場合は期待どおりに機能しますが、Awesome WM( Mod4 で新しい端末を生成した場合) +戻る )常にSHLVL=2
で始まります 以上。これは正常ですか?
これは、Awesome( Mod4 を再起動した回数に直接関係しています。 + Ctrl + r またはpkill -HUP awesome
)。再起動時に新しいシェルが生成されないようにする方法はありますか?
Awesomeは最終的に$SHELL -c ...
のようなものを実行するため、これらのコミットは関連しているようです。 HUP
で 、しかし私はそれを修正するのに十分なCを知りません。
私の/bin/sh
dash
です 私のログインシェルはbash
です 。
問題を報告しました。
承認された回答:
理由は理解できたと思いますが、完全な修正はありません。
SHLVL
の動作 シェルに依存します。ダッシュとksh(pdkshとksh93の両方)では、インタラクティブインスタンスのみがSHLVL
をインクリメントします 。 bashとzshでは、すべてのインスタンスがSHLVL
をインクリメントします 、bash -c …
でも 。
このパッチの後に動作の変化が見られた場合は、/bin/sh
である可能性があります。 ダッシュとあなたの$SHELL
bashです。以前は、/bin/sh -c …
を実行していました。 SHLVL
は変更されませんでした 。パッチ適用後、$SHELL -c …
を実行しています。 、つまりbash -c …
、SHLVL
をインクリメントします 。
SHLVL
を変更することでチートできます 素晴らしい中。スタートアップコードに接続して、SHLVL
を減らします Luaコードはわかりませんが、Cコードを再コンパイルしなくてもこれが可能であると確信しています。