「RedHatEnterpriseLinux Serverリリース7.1(Maipo)」を使用しています。
非ログインシェルを使用している場合、最小シェルレベル(echo $ SHLVL)は最小レベル2から始まり、サブが続くにつれて増加します。 -shells。
しかし、login-shellを使用している場合、最小シェルレベル(echo $ SHLVL)は最小シェルレベル2から始まり、サブシェルが続くにつれて増加します。
[Que。]ログインシェル(最小シェルレベル1から開始)と非ログインシェル(最小シェルレベル2から開始)の最小シェルレベルに違いがあるのはなぜですか?
私はbashを使用しています。
承認された回答:
bashのmanページから:
SHLVLbashのインスタンスが開始されるたびに1ずつ増加します。
ご覧のとおり、この変数は、ログインシェルであるかどうかとは関係ありません。これは、bashシェルが別のbashシェルによって開始されたことを意味します。シェルを取得するために何をしているのか正確にはわからないため、ネストされたシェル呼び出しがある理由はわかりませんが、一般的なケースをいくつか示します。
-
コマンドラインから新しいターミナルウィンドウを開始しています
-
いくつかのOS機能を使用して新しいターミナルウィンドウを開始しています。この機能は、最初にbashを開始してからターミナルを実行し、次に新しいシェルを実行することで実装されます
-
再帰的な
bash
があります SHLVLが1に等しいときに実行される.bash_profileを呼び出します(これは奇妙に聞こえますが、これはすでに2回見ています!)