Cuando ejecuto echo $SHELL
la salida dice lo /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 publico 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?
tcsh/csh
tiene su caparazón actual en$shell
Respuestas:
$SHELL
no 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
ps
sintaxis 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
tcsh
sea su shell predeterminado, usechsh
para configurarlo.fuente
chsh
,.bashrc
solo 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
$0
variable 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