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
Eu li que o terminal não é nada além de shell, e o Unix fornece sabores diferentes de shells:
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
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 "$$"
$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
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.
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
Tags command-line