¿En qué shell estoy ejecutando?

¿En qué shell estoy ejecutando?

Cuando ejecuto echo $SHELLel resultado dice /bin/tcshque significa que estoy ejecutando un tcshshell. Pero, por ejemplo, cuando emito el siguiente comando

alias emacs 'emacs -nw' 

Obtuve el siguiente error:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

¡Y cuando lo ejecuto alias emacs="emacs -nw"funciona bien!

Esto es confuso ya que estoy ejecutando tcshpero los comandos son interpretados por bash.

¿Cuál podría ser la razón?

Respuesta1

$SHELLno es necesariamente su caparazón actual, es elshell de inicio de sesión predeterminado. Para comprobar el shell que está utilizando, intente

ps $$

Esto debería funcionar en los Unix/Linux más recientes con un pssoporte que admita la sintaxis BSD. De lo contrario, esta es la forma portátil (POSIX)

ps -p $$

Eso debería devolver algo como esto si está ejecutando tcsh:

8773 pts/10   00:00:00 tcsh

Si desea que sea tcshsu shell predeterminado, utilícelo chshpara configurarlo.

Respuesta2

Desde la línea de comando, también puedes usar la $0variable para determinar qué shell estás usando. p.ej:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

Nota: no puede determinar el shell usando $0 dentro de un script, porque $0 será el script en sí.

Respuesta3

Esta es una enmienda a todas las mejores respuestas anteriores. Tuve un pequeño problema para identificar el tablero en un momento; Parecía correcto compartir:

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

Bueno para solucionar problemas en espacios reducidos, eso es todo. Salud.

Respuesta4

Un sistema operativo Unix/Linux puede tener más de un shell instalado. Puede escribir el siguiente comando en su terminal para ver qué shell está utilizando:

A continuación se muestra la lista,

  • Concha Bourne – sh
  • Shell C-csh
  • Carcasa T – tcsh
  • Concha de Korn – ksh
  • Shell de nuevo encendido – bash
  • Cáscara del tablero
  • concha Z

Esta lista no está completa y hay muchos otros shells.

El archivo /etc/shells almacena la lista de todos los shells instalados en su sistema. Simplemente, ejecute el siguiente comando para descubrir los shells instalados,

$ cat /etc/shells

Ejecute el comando grep en el archivo /etc/passwd para conocer el shell predeterminado cuando inicia sesión en el sistema operativo Unix o Linux.

$ grep john /etc/passwd    

También puedes utilizar la variable $SHELL para el mismo propósito.

echo $0
$ echo $SHELL

El resultado será similar al siguiente si está utilizando elintento(Bourne Again Shell) terminal: cuando hay varios shells instalados en su sistema, siempre puede cambiar el shell.

Entonces, ¿cómo sabes qué shell estás ejecutando en este momento?

Simplemente use el siguiente comando

-bash
$ ps -p $$

Creo que todas tus preguntas están respondidas. Si todavía tienes dudas, puedes consultareste artículo fuente.

información relacionada