Jak zjistit, který shell používám?

242

Přečetl jsem, že terminál není nic jiného než shell, a Unix poskytuje různé příchutě shellů:

  • shell Bourne (sh)
  • C shell (csh)
  • Kryt TC (tcsh)
  • Korn shell (ksh)
  • Bourne znovu shell (bash)

Otázky:

  • Když otevře okno terminálu, který je ve výchozím nastavení otevřen?
  • Jak zjistím, kolik skořepin je nainstalováno?
  • Jak mohu změnit shell používané z mého účtu?
dané goutham 28.02.2015 04:58

5 odpovědí

293

Chcete-li zjistit, který shell používáte, zadejte následující příkaz:

echo 
-bash

Pokud používáte terminál bash ( Bourne Again Shell ), výsledek bude vypadat podobně jako níže:

%pr_dfe%     
odpověděl kingmilo 28.02.2015 05:03
80

Chcete-li nalézt shell, který máte ve výchozím prostředí, můžete zkontrolovat hodnotu proměnné prostředíSHELL:

echo $SHELL

Chcete-li najít aktuální instanci shellu, podívejte se na proces (shell), který má PID aktuální instance shellu.

Chcete-li najít PID aktuální instance shellu:

echo "$$"

Nyní najdete proces s PID:

ps -p <PID>

Uvedení dohromady:

ps -p "$$"
    
odpověděl heemayl 28.02.2015 05:06
16

$SHELL vám dává výchozí shell. /bin/ksh vám dává aktuální shell.

Například: Mám bash jako svůj výchozí shell, který používám pro moje Terminal App. Ale pro svou aplikaci iTerm2 používám tento příkaz při otevření okna:/bin/ksh.

Takže můj $SHELL mi dává/bin/bash na iTerm2. $SHELL mi dává/bin/bash na iTerm2. %co_kde%,%co_kde% mi dává%co_kde% na terminálu

    
odpověděl nakulchawla09 18.11.2016 12:45
5

Chcete-li zjistit, který je výchozí shell pro vašeho uživatele, můžete spustit:

echo "$SHELL"

Například pokud používáte Bash, měli byste získat následující výstup:

/bin/bash

Pokud jste neměli žádnou konfiguraci, měl by být Bash od Bashu, protože je to výchozí shell v Ubuntu.

    
odpověděl kos 28.02.2015 05:02
3

Ostatní odpovědi mají tendenci využívat specifické vlastnosti prostředí, ale snažíme se zjistit, který shell používáme, a tak přijmou odpověď na problém. Například žádná z odpovědí nebude pracovat na rybách.

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

Místo toho použijte syntaxi $$ v vyvolání sh, ale pak hledáme PPID ne PID. Použijte PPID k nalezení cmd.

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

Díky za zlepšení @ muru

    
odpověděl Evan Benn 06.04.2018 06:00