Como verificar qual shell estou usando?

253

Eu li que o terminal não é nada além de shell, e o Unix fornece sabores diferentes de shells:

  • Bourne shell (sh)
  • shell C (csh)
  • shell do TC (tcsh)
  • Korn shell (ksh)
  • shell Bourne Again (bash)

Perguntas:

  • Quando abro uma janela de terminal, qual shell é aberto por padrão?
  • Como faço para verificar quantas shells estão instaladas?
  • Como altero o shell usado na minha conta?
por goutham 28.02.2015 / 04:58
fonte

5 respostas

308

Você pode digitar o seguinte comando no seu terminal para ver qual shell está usando:

echo $0

O resultado será algo similar ao abaixo se você estiver usando o terminal bash ( Bourne Again Shell ):

-bash
    
por kingmilo 28.02.2015 / 05:03
fonte
85

Para encontrar o shell que você tem no ambiente padrão, você pode verificar o valor da variável de ambiente SHELL :

echo $SHELL

Para encontrar a instância atual do shell, procure o processo (shell) com o PID da instância atual do shell.

Para encontrar o PID da instância atual do shell:

echo "$$"

Agora, para encontrar o processo com o PID:

ps -p <PID>

Colocando tudo junto:

ps -p "$$"
    
por heemayl 28.02.2015 / 05:06
fonte
18

$SHELL fornece o shell padrão. $0 fornece o shell atual.

Por exemplo: eu tenho o bash como meu shell padrão, que eu uso para o meu Terminal App. Mas para o meu aplicativo iTerm2, eu uso o comando quando a janela é aberta: /bin/ksh .

Então, meu $0 me dá /bin/ksh no iTerm2. $SHELL me dá /bin/bash no iTerm2. $0 , $SHELL me dá /bin/bash no terminal

    
por nakulchawla09 18.11.2016 / 12:45
fonte
6

Para saber qual é o shell padrão do seu usuário, você pode executar:

echo "$SHELL"

Por exemplo, se você estiver usando o Bash, deverá obter a seguinte saída:

/bin/bash

Se você não alterou nenhuma configuração, deve ser o Bash, já que o Bash é o shell padrão no Ubuntu.

    
por kos 28.02.2015 / 05:02
fonte
3

As outras respostas tendem a usar recursos específicos do shell, mas estamos tentando descobrir qual shell estamos usando, para que eles assumam a resposta para o problema. Por exemplo, nenhuma das respostas funcionará em peixes.

sh -c 'ps -p $$ -o ppid=' | xargs ps -o cmd= -p

Em vez disso, use a sintaxe $$ em uma invocação de sh, mas, em seguida, estamos procurando pelo PPID e não pelo PID. Use o PPID para encontrar o cmd.

sh -c 'ps -p $$ -o ppid=' | xargs -i readlink -f /proc/\{\}/exe

Obrigado pela melhoria @muru

    
por Evan Benn 06.04.2018 / 06:00
fonte