$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
を見てください :マイナス -
で始まる場合 、ログイン シェルにいます。