Em qual shell estou executando?

Em qual shell estou executando?

Quando executo, echo $SHELLa saída diz /bin/tcsho que significa que estou executando um tcshshell. 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, tcshmas os comandos são interpretados por bash.

Qual seria a razão?

Responder1

$SHELLnã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 pssuporte à 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 tcshseu shell padrão, use chshpara defini-lo.

Responder2

Na linha de comando, você também pode usar a $0variá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.

informação relacionada