Awesomeの新しい端末がSLVL> 1で生成されるのはなぜですか?

Awesomeの新しい端末がSLVL> 1で生成されるのはなぜですか?

PS1SLVLが1でない場合はSLVLが表示され、サブシェルにあることをすばやく確認できます。これはGNOMEを使用すると期待どおりに機能しますが、Mod4Awesome WM(+)で新しい端末を作成すると、Return常にSHLVL=2異常で始まります。これは普通ですか?

Mod4これは、Awesome(++または)を再起動する回数と直接関連しています。再起動時に新しいシェルが作成されるのを防ぐ方法はありますか?Ctrlrpkill -HUP awesome

これら 提出する$SHELL -c ...Awesomeがこのようなことを実行するようになったので、関連があるようですが、HUPそれを修正できるほどCを知りません。

私のログインシェルは/bin/shです。dashbash

問題を報告しました。

ベストアンサー1

理由を理解すると思いますが、完全な解決策はありません。

動作はSHLVLシェルによって異なります。ダッシュとksh(pdkshとksh93)では、対話型インスタンスのみが増加しますSHLVL。 Bashとzshでは、すべてのインスタンスがincremented SHLVL、さらにincrementedされますbash -c …

その後、行動の変化を観察した場合今回のパッチ/bin/sh、あなたのものはダッシュであり、あなたの$SHELLものはbashである可能性が非常に高いです。以前はawesomeが実行されていましたが、/bin/sh -c …何も変わりませんでしたSHLVL。パッチの後は現在実行中です$SHELL -c …bash -c …つまりSHLVL、。

SHLVLAwesomeの内部を変更すると、トリックを書くことができます。スタートコードをフックしてSHLVL1ずつ減らします。 Luaコードはわかりませんが、Cコードを再コンパイルすることなくこれが可能であると確信しています。

おすすめ記事