
Quando executo, echo $SHELL
a saída diz /bin/tcsh
o 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 emito alias emacs="emacs -nw"
funciona bem!
Isso é confuso porque estou executando, tcsh
mas os comandos são interpretados por bash
.
Qual seria a razão?
Responder1
$SHELL
não é necessariamente o seu shell atual, é oshell de login padrão. Para verificar o shell que você está usando, tente
ps $$
Isso deve funcionar no Unix/Linux mais recente com ps
suporte à sintaxe BSD. Caso contrário, esta é a maneira portátil (POSIX)
ps -p $$
Isso deve retornar algo assim se você estiver executando tcsh
:
8773 pts/10 00:00:00 tcsh
Se você quiser que seja tcsh
seu shell padrão, use chsh
para defini-lo.
Responder2
Na linha de comando, você também pode usar a $0
variável para determinar qual shell está usando. por exemplo:
~$ echo $0
/bin/bash
~$ ksh
$ echo $0
ksh
Nota: você não pode determinar o shell usando $0 dentro de um script, porque $0 será o próprio script.
Responder3
Esta é uma alteração a todas as melhores respostas acima. Tive um pequeno problema ao identificar o traço em um ponto; parecia certo compartilhar:
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
Bom para solucionar problemas em locais apertados, é tudo. Saúde.
Responder4
Um sistema operacional Unix/Linux pode ter mais de um shell instalado. Você pode digitar o seguinte comando em seu terminal para ver qual shell você está usando:
Abaixo está a lista,
- Bourne Shell – sh
- Shell C – csh
- Shell T – tcsh
- Casca Korn – ksh
- Shell Bourn-again – bash
- Concha de traço
- Concha Z
Esta lista não está completa e existem muitos outros shells.
O arquivo /etc/shells armazena uma lista de todos os shells instalados em seu sistema. Simplesmente, execute o comando abaixo para descobrir os shells instalados,
$ cat /etc/shells
Execute o comando grep no arquivo /etc/passwd para saber o shell padrão ao fazer login no sistema operacional Unix ou Linux.
$ grep john /etc/passwd
Você também pode usar a variável $SHELL para a mesma finalidade.
echo $0
$ echo $SHELL
O resultado será semelhante ao abaixo se você estiver usando ofesta(Bourne Novamente Concha) terminal: quando há vários shells instalados em seu sistema, você sempre pode trocar o shell.
então, como você sabe qual shell está executando no momento?
Basta usar o comando abaixo
-bash
$ ps -p $$
Acho que todas as suas perguntas foram respondidas. Se ainda tiver dúvidas, você pode consultareste artigo fonte.