Cuando ingreso a una máquina Ubuntu, ¿qué tipo de shell estoy usando?

Cuando ingreso a una máquina Ubuntu, ¿qué tipo de shell estoy usando?

Sigo leyendo sobre shells interactivos, no interactivos, de inicio de sesión y sin inicio de sesión.

(Esto es en el contexto de cuál de los archivos .bash* se lee).

No entiendo qué es cada tipo de caparazón, así que comencemos con lo básico.

Si hago ssh desde mi Mac a mi máquina Ubuntu, ¿qué tipo de shell se activa?

Respuesta1

Si utiliza SSH en su caja de Ubuntu, obtendrá un shell de inicio de sesión interactivo. Aquí está la diferencia:

  • Interactivo versus no interactivo:Cualquier shell donde pueda escribir cuando se le solicite es interactivo. De hecho, muchos scripts prueban la variable $PS1que contiene la cadena de mensaje para saber si son interactivos. Si un shell está ejecutando un script de shell, no es interactivo.

    Entonces, si lo hace ssh yourbox.example.com, obtendrá un shell interactivo, asumiendo la configuración predeterminada, mientras que si lo hace ssh yourbox.example.com mighty_shellscript.sh, terminará con un shell no interactivo y su sesión SSH finalizará cuando finalice el script.

  • Iniciar sesión versus no iniciar sesión:Cuando inicia sesión desde la consola o de forma remota (como SSH), o cuando pasa la -lopción a bash, obtiene un shell de inicio de sesión. De lo contrario, como cuando abre una ventana de terminal, obtendrá un shell sin inicio de sesión.

    Para probar si un shell es un shell de inicio de sesión, verifique si su nombre de comando es -bashen lugar de bash:

    ps -ef | grep [b]ash
    

Respuesta2

Obtiene un shell de inicio de sesión interactivo. Pero no lo des por sentado, compruébalo tú mismo.

Esto le indica que tiene un shell de inicio de sesión (desde man bash):

# shopt | grep login
login_shell     on

Esto le indica que tiene un shell interactivo, busque i(de man bash):

# echo $-
himBH

El shell de inicio de sesión interactivo que obtiene ha leído /etc/profiley más de uno de y ~/.bash_profile, como se explica en :~/.bash_login~/.profileman bash

Cuando se invoca bash como shell de inicio de sesión interactivo, o como un shell no interactivo con la opción --login,primero lee y ejecuta comandos del archivo /etc/profile, si ese archivo existe. Después de leer ese archivo, busca ~/.bash_profile, ~/.bash_login y ~/.profile, en ese orden, y lee y ejecuta comandos desde el primero que existe y es legible. La opción --noprofile se puede utilizar cuando se inicia el shell para inhibir este comportamiento.

Respuesta3

Elssh(1)La página de manual dice:

SidominioSi se especifica, se ejecuta en el host remoto en lugar de en un shell de inicio de sesión.

y

Cuando el servidor acepta la identidad del usuario, el servidor ejecuta el comando dado o inicia sesión en la máquina y le proporciona al usuario un shell normal en la máquina remota.

Esos me sugieren que el shell que estás obteniendo es un shell de inicio de sesión.

Respuesta4

Pruebe este comando.

[max@localhost ~]$ eco $SHELL
/bin/bash

Obtendrá este resultado porque su tipo de shell está almacenado en esta variable SHELL.

Para conocer su variable de entorno, escriba este comando

[max@localhost ~]$ entorno
.
.
.
NOMBREHOST=localhost.dominiolocal
SHELL=/bin/bash
TAMAÑOHIST=1000
USUARIO=máx.
.
.
.

mientras escribe, echo $SHELLimprimirá el valor almacenado aquí

Este valor se actualiza para cada inicio.

información relacionada