Li que o terminal não é mais do que uma concha, e o Unix fornece diferentes sabores de conchas:
Pode digitar o seguinte comando no seu terminal para ver qual a concha que está a utilizar:
echo $0
O resultado será semelhante ao abaixo indicado se estiver a utilizar o terminal bash (**Bourne Again Shell***):
-bash
Para encontrar a shell que tem no ambiente padrão, pode verificar o valor da variável de ambiente SHELL
:
echo $SHELL
Para encontrar a actual instância da concha, procurar o processo (concha) com o PID da actual instância da concha.
Para encontrar o PID da actual instância de concha:
echo "$$"
Agora para encontrar o processo tendo o PID:
ps -p <PID>
Juntar tudo:
ps -p "$$"
O $SHELL
dá-lhe a shell padrão.
$0
dá-lhe a shell actual.
Por exemplo:
Eu tenho bash como minha shell padrão, que eu utilizo para a minha aplicação de terminal.
Mas para a minha aplicação iTerm2, eu utilizo o comando quando a janela abre:
/bin/ksh
.
Então o meu
$0me dá
/bin/kshno iTerm2. $$SHELL
me dá /bin/bash
no iTerm2.
$0
,$SHELL
me dá /bin/bash
no iTerm2.
As outras respostas tendem a usar características específicas da shell, mas estamos tentando descobrir qual shell estamos usando, então eles assumem a resposta para o problema. Por exemplo, nenhuma das respostas irá funcionar com peixes.
sh -c 'ps -p $$ -o ppid=' | xargs ps -o comm= -p
Em vez disso, use a sintaxe $$ numa invocação de sh, mas depois estamos à procura do PPID e não do PID. Use o PPID para encontrar o cmd.
sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'
Obrigado por melhorar @muru
Para saber qual é a shell padrão para o seu utilizador, pode correr:
echo "$SHELL"
Por exemplo, se você'estiver a usar Bash deverá obter a seguinte saída:
/bin/bash
Se não alterou'não alterar nenhuma configuração deve ser Bash desde Bash it's a concha padrão no Ubuntu.
O posto original fez três perguntas. As respostas dadas cobrem a primeira pergunta, "Quando abro uma janela de terminal, qual shell é aberta por padrão?" Eles também respondem a uma pergunta que NÃO foi feita, nomeadamente "Como posso descobrir qual shell está actualmente a correr no terminal?" No entanto, tanto quanto posso ver ninguém respondeu à segunda ou terceira pergunta originalmente feita, nomeadamente "Como posso verificar quantos shells estão instalados?" e "Como posso alterar a shell utilizada a partir da minha conta?"
cat /etc/shells
Por exemplo, em uma instalação padrão do Ubuntu 18.10 isto dá:
shells de login válidas
/bin/sh
/caixote do lixo
/bin/bash
/bin/rbash
No entanto, por padrão sh é um link simbólico para traço, enquanto que rbash links para bash com a opção -r ("restricted bash") de modo que na verdade existem apenas dois shells, e não quatro como a lista acima sugere. O seguinte comando irá mostrar-lhe se algum dos shells listados são de facto links simbólicos, e se sim, para onde eles se ligam: ls -l /bin
Em um dos servidores aos quais me conecto, a shell de login é /bin/sh
que é um link simbólico para /bin/bash
.
A maioria das respostas aqui dará sh
, o que faria o OP considerá-lo's Bourne shell e não GNU bash, exceto [este aqui][1] que dá /bin/bash
.
Outra opção que funciona para este caso é:
$ echo $SHELL
/bin/sh
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 May 31 16:15 /bin/sh -> bash
$ /bin/sh --help
GNU bash, version 4.2.10(1)
Usage: /bin/sh [GNU long option] [option] ...
/bin/sh [GNU long option] [option] script-file ...