
Cuando ejecuto echo $SHELL
el resultado dice /bin/tcsh
que significa que estoy ejecutando un tcsh
shell. 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 tcsh
pero los comandos son interpretados por bash
.
¿Cuál podría ser la razón?
Respuesta1
$SHELL
no 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 ps
soporte 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 tcsh
su shell predeterminado, utilícelo chsh
para configurarlo.
Respuesta2
Desde la línea de comando, también puedes usar la $0
variable 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.