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コードを再コンパイルしなくてもこれが可能であると確信しています。