GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué $shlvl comienza en el nivel 2 en los shells sin inicio de sesión pero en el nivel 1 en los shells de inicio de sesión en Rhel 7?

Estoy usando "Red Hat Enterprise Linux Server versión 7.1 (Maipo)".
Cuando estoy en un shell sin inicio de sesión, el nivel mínimo de shell (echo $SHLVL) comienza en el nivel mínimo 2 y aumenta con subsiguientes -shells.
Pero cuando estoy usando un shell de inicio de sesión, el nivel mínimo de shell (echo $SHLVL) comienza en el nivel mínimo de shell 2 y aumenta con los subshells sucesivos.

[Pregunta] ¿Por qué hay una diferencia en el nivel mínimo de shell entre el shell de inicio de sesión (comienza en el nivel mínimo de shell 1) y el shell sin inicio de sesión (comienza en el nivel mínimo de shell 2)?

Estoy usando bash.

Respuesta aceptada:

Desde la página man de bash:

SHLVL Se incrementa en uno cada vez que se inicia una instancia de bash.

Como puede ver, esta variable no está relacionada con el hecho de si es un shell de inicio de sesión o no. Simplemente significa que su shell bash ha sido iniciado por otro shell bash. Dado que no sabemos qué está haciendo exactamente para obtener su shell, no puedo decir por qué tiene una invocación de shell anidada, pero aquí hay algunos casos comunes:

  • Está iniciando una nueva ventana de terminal desde la línea de comando

  • Está utilizando alguna función del sistema operativo para iniciar una nueva ventana de terminal, y esta función se implementa iniciando primero un bash que luego ejecuta el terminal que luego ejecuta un nuevo shell

  • Tienes un bash recursivo llame a su .bash_profile que se ejecuta cada vez que SHLVL es igual a 1 (esto suena extraño, ¡pero ya lo he visto dos veces!)


Linux
  1. ¿Por qué la expresión regular funciona en X pero no en Y?

  2. ¿Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?

  3. ¿Cuál es la lectura del archivo Conf entre el Shell de inicio de sesión y el de no inicio de sesión?

  4. ¿Por qué el usuario raíz necesita permiso de Sudo?

  5. ¿Por qué el documento principal Shell Here no funciona para el subcomando en Dash pero Bash funciona?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Por qué `zip` en un bucle For funciona cuando el archivo existe, pero no cuando no existe?

¿Por qué este "mientras se lee" funciona en una terminal, pero no en un script de Shell?

¿Por qué Regex en Bash funciona solo si es una variable y no directamente?

CentOS / RHEL:cómo cambiar el shell de inicio de sesión del usuario

¿Por qué el usuario 'bin' necesita un shell de inicio de sesión?