
私PS1
SLVLが1でない場合はSLVLが表示され、サブシェルにあることをすばやく確認できます。これはGNOMEを使用すると期待どおりに機能しますが、Mod4Awesome WM(+)で新しい端末を作成すると、Return常にSHLVL=2
異常で始まります。これは普通ですか?
Mod4これは、Awesome(++または)を再起動する回数と直接関連しています。再起動時に新しいシェルが作成されるのを防ぐ方法はありますか?Ctrlrpkill -HUP awesome
これら 提出する$SHELL -c ...
Awesomeがこのようなことを実行するようになったので、関連があるようですが、HUP
それを修正できるほどCを知りません。
私のログインシェルは/bin/sh
です。dash
bash
答え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
、。
SHLVL
Awesomeの内部を変更すると、トリックを書くことができます。スタートコードをフックしてSHLVL
1ずつ減らします。 Luaコードはわかりませんが、Cコードを再コンパイルすることなくこれが可能であると確信しています。