Em qual shell estou executando?

37

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' 

Eu recebo o seguinte erro:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

e quando eu emito o alias emacs="emacs -nw" ele corre bem!

Isso é confuso, pois estou executando tcsh , mas os comandos são interpretados por bash .

Qual poderia ser o motivo?

    
por coffeMug 16.10.2013 / 15:12

4 respostas

48

$SHELL não é necessariamente seu shell atual, é o shell de login padrão . Para verificar o shell que você está usando, tente

ps $$

Isso deve funcionar no Unix / Linux mais recente com um ps que suporte a sintaxe do 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 o tcsh seja seu shell padrão, use chsh para defini-lo.

    
por 16.10.2013 / 15:20
8

Na linha de comando, você também pode usar a variável $0 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 em um script, porque $ 0 será o próprio script.

    
por 16.10.2013 / 16:15
1

Isso funciona para o linux:

lsof -a -p $$ -d txt

ou, se você precisar de uma seleção mais strong (mais sistemas):

lsof -a +D /bin +D /usr/bin -p $$ -d txt
    
por 08.09.2015 / 18:05
1

Esta é uma emenda a todas as melhores respostas acima. Eu tive um pequeno problema identificando traço em um ponto; parecia certo em 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 pontos restritos é tudo. Felicidades.

    
por 20.01.2018 / 22:37

Tags