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.