No creo que se pueda dar una respuesta correcta sin "jerga técnica". Dado que esta pregunta es la primera que aparece en Google para la consulta “¿Qué es un shell de inicio de sesión?”, A continuación proporciono una respuesta más correcta:
El shell de inicio de sesión es simplemente un shell que se le dijo que fuera un shell de inicio de sesión. No , no significa concha que aparece después de que se conecte, aunque por lo general aplicación que se registra en la cáscara está diciendo que lanza a ser un intérprete de ingreso. Existen las siguientes formas de decirle a Shell que debe ser una de inicio de sesión:
- Ejecutar shell con
-l
o --login
argumento suponiendo que lo sabe (no conozco ningún shells que no conozca -l
, pero --login
solo es compatible con unos pocos shells).
- Ejecutar shell con
argv[0]
set to -{some_string}
(es decir, con HYPHEN-MINUS antepuesto al habitual argv[0]
o a alguna otra cadena). Esto es lo que hacen ssh y su: su solo ejecuta ejecutable con -su
as argv[0]
(hola a todos los que piensan que argv[0]
tiene algo que ver con el nombre ejecutable actualmente en ejecución), ssh ejecuta zsh con -zsh
cuando el usuario ha establecido /bin/zsh
su shell.
Loginess of the shell no tiene absolutamente nada que ver con que alguien le solicite una contraseña o realice algún otro procedimiento de autenticación. Algunos programas como ssh o login (o algunos emuladores de terminal como urxvt) ejecutan shells como login utilizando aquellos argv[0]
que comienzan con un HYPHEN-MINUS. Algunos como su o sudo (o zsh: consulte el -
modificador de precomando que se describe en la sección MODIFICADORES DE PRECOMMAND man zshmisc
) en no lo hacen de forma predeterminada, pero se puede decir que sí. Algunos tienen la única opción de decirle a Shell que sea el de inicio de sesión utilizando su argumento (es decir bash -l
): ssh con un argumento de comando (que explícitamente le dice a ssh qué ejecutar en el extremo remoto).
En general, es mejor consultar primero la documentación del programa utilizado para invocar el shell para determinar si será el inicio de sesión y luego realizar algunas pruebas para determinar si la aplicación lanzará un shell de inicio de sesión (por ejemplo, agregando echo
a .profile
).