Quando executo echo $SHELL
a saída diz o /bin/tcsh
que significa que estou executando um tcsh
shell. Mas, por exemplo, quando eu emito o seguinte comando
alias emacs 'emacs -nw'
Estou tendo o erro a seguir:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
e quando eu emitir, alias emacs="emacs -nw"
ele corre bem!
Isso é confuso, pois estou executando, tcsh
mas os comandos são interpretados por bash
.
Qual seria a razão?
tcsh/csh
tem seu shell atual em$shell
Respostas:
$SHELL
não é necessariamente seu shell atual, é o shell de login padrão . Para verificar o shell que você está usando, tenteIsso deve funcionar no Unix / Linux mais recente, com
ps
suporte à sintaxe BSD. Caso contrário, esta é a maneira portátil (POSIX)Isso deve retornar algo assim se você estiver executando
tcsh
:Se você quiser
tcsh
ser seu shell padrão, use-ochsh
para configurá-lo.fonte
chsh
,.bashrc
somente será lido se você estiver i) executando o bash e ii) executando-o como um shell interativo e sem login. Como você está acessando esta máquina?ps $$
Na linha de comando, você também pode usar a
$0
variável para determinar qual shell você está usando. por exemplo:Nota: você não pode determinar o shell usando $ 0 dentro de um script, porque $ 0 será o próprio script.
fonte
Isso funciona para linux:
ou, se você precisar de uma seleção mais forte (mais sistemas):
fonte
Esta é uma alteração a todas as melhores respostas acima. Eu tive um pequeno problema ao identificar traço em um ponto; parecia certo em compartilhar:
Bom para solucionar problemas em locais apertados é tudo. Felicidades.
fonte