GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo verificar si un shell es de inicio de sesión/interactivo/por lotes?

Creo que entiendo las diferencias entre un interactivo, un inicio de sesión y un shell por lotes. Consulte los siguientes enlaces para obtener más ayuda:

  • ¿Cuál es la diferencia entre un 'Inicio de sesión' y un shell bash 'Interactivo' (del sitio hermano:serverfault.com)
  • 2.1:Tipos de shell:shells interactivos y de inicio de sesión (de Guía del usuario de Z-Shell )

Mi pregunta es, ¿cómo puedo probar con un comando/condición si estoy en un shell interactivo, de inicio de sesión o por lotes?

Estoy buscando un comando o una condición (que devuelva true) o false ) y que también podría colocar en una declaración if. Por ejemplo:

if [[ condition ]]
   echo "This is a login shell"
fi

Respuesta aceptada:

Estoy asumiendo un bash shell, o similar, ya que no hay ningún shell en las etiquetas.

Para verificar si está en un shell interactivo:

[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'

Para verificar si está en un shell de inicio de sesión:

shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'

Por "lote", supongo que te refieres a "no interactivo", por lo que la verificación de un shell interactivo debería ser suficiente.


Linux
  1. ¿Cómo probar qué Shell estoy usando en una terminal?

  2. ¿Por qué Bashrc comprueba si el shell actual es interactivo?

  3. ¿Por qué los shells interactivos están predeterminados en los shells de inicio de sesión de Osx?

  4. ¿Cómo verificar qué shell estoy usando?

  5. Cómo cambiar Shell en Linux

Cómo comprobar la versión de Python

Cómo comprobar la versión de Java

Cómo instalar Fish, The Friendly Interactive Shell, en Linux

¿Cómo comprobar la versión de OpenGL?

Cómo verificar si existe un archivo o directorio en Bash Shell

¿Qué es Login Shell en Linux?