GNU/Linux >> Linux の 問題 >  >> Linux

ネストされたシェルを実行しているかどうかを確認するにはどうすればよいですか?

$SHLVL 変数は、シェルのネスト レベルを追跡します:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1

サブシェルを生成する代わりに、スタックからディレクトリをプッシュおよびポップして、同じシェルにとどまることができます:

[[email protected] /old/dir]# pushd /new/dir
/new/dir /old/dir
[[email protected] /new/dir]# popd
/old/dir
[[email protected] /old/dir]#

これは私のプロンプトの一部の簡略版です:

PS1='$(((SHLVL>1))&&echo $SHLVL)\$ '

ネストされたシェルにいない場合は何も追加されませんが、ネストのレベルに関係なく深さが表示されます。


$0 を見てください :マイナス - で始まる場合 、ログイン シェルにいます。


Linux
  1. シェルスクリプトで環境変数を「エクスポート」する方法は?

  2. どのシェルで実行していますか?

  3. Ddがまだ機能しているかどうかを知る方法は?

  1. Bashは、どのように呼び出されているかをどのように知っていますか?

  2. IPマルチキャストが有効になっているかどうかを知る方法は?

  3. Linuxでシェルを変更する方法

  1. シェルスクリプトの並列実行

  2. 現在実行中のシェルが BusyBox かどうかを確認する方法

  3. 実行中のプロセスの絶対パスを知るにはどうすればよいですか?