Cuando ejecuto echo $SHELLla salida dice lo /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 publico 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?

tcsh/cshtiene su caparazón actual en$shellRespuestas:
$SHELLno es necesariamente su shell actual, es el shell de inicio de sesión predeterminado . Para verificar el shell que está utilizando, intenteEsto debería funcionar en la versión más reciente de Unix / Linux con una
pssintaxis BSD. De lo contrario, esta es la forma portátil (POSIX)Eso debería devolver algo como esto si está ejecutando
tcsh:Si desea que
tcshsea su shell predeterminado, usechshpara configurarlo.fuente
chsh,.bashrcsolo se leerá si está i) ejecutando bash y ii) ejecutándolo como un shell interactivo sin inicio de sesión. ¿Cómo estás iniciando sesión en esta máquina?ps $$Desde la línea de comando, también puede usar la
$0variable para determinar qué shell está usando. p.ej:Nota: no puede determinar el shell utilizando $ 0 dentro de un script, porque $ 0 será el script en sí.
fuente
Esto funciona para Linux:
o, si necesita una selección más fuerte (más sistemas):
fuente
Esta es una enmienda a todas las mejores respuestas anteriores. Tuve un pequeño problema al identificar el guión en un punto; parecía correcto compartir:
Bueno para solucionar problemas en espacios reducidos es todo. Aclamaciones.
fuente