Jak sprawdzić, z której powłoki korzystam?

249

Czytałem, że terminal to nic innego jak shell, a Unix zapewnia różne smaki powłok:

  • Bourne shell (sh)
  • Powłoka C (csh)
  • Powłoka TC (tcsh)
  • Korn shell (ksh)
  • Bourne Again shell (bash)

Pytania:

  • Kiedy otwieram okno terminala, która powłoka jest domyślnie otwierana?
  • Jak sprawdzić, ile powłok jest zainstalowanych?
  • Jak zmienić powłokę używaną na moim koncie?
zadawane goutham 28.02.2015, 04:58
źródło

5 odpowiedzi

301

W terminalu możesz wpisać następujące polecenie, aby sprawdzić, której powłoki używasz:

echo $0

Wynik będzie wyglądał podobnie do poniższego, jeśli używasz terminalu bash ( Bourne Again Shell ):

-bash
    
odpowiedział kingmilo 28.02.2015, 05:03
źródło
83

Aby znaleźć powłokę w domyślnym środowisku, możesz sprawdzić wartość zmiennej środowiskowej SHELL :

echo $SHELL

Aby znaleźć bieżącą instancję powłoki, poszukaj procesu (powłoki) posiadającego identyfikator PID bieżącej instancji powłoki.

Aby znaleźć PID bieżącej instancji powłoki:

echo "$$"

Teraz, aby znaleźć proces z PID:

ps -p <PID>

Łączenie:

ps -p "$$"
    
odpowiedział heemayl 28.02.2015, 05:06
źródło
16

$SHELL daje ci domyślną powłokę. $0 daje bieżącą powłokę.

Na przykład: Mam bash jako domyślną powłokę, której używam dla mojej aplikacji terminalowej. Ale dla mojej aplikacji iTerm2, używam polecenia, gdy otwiera się okno: /bin/ksh .

Więc mój $0 daje mi /bin/ksh na iTerm2. $SHELL daje mi /bin/bash na iTerm2. $0 , $SHELL daje mi /bin/bash na Terminalu

    
odpowiedział nakulchawla09 18.11.2016, 12:45
źródło
5

Aby dowiedzieć się, która jest domyślną powłoką dla twojego użytkownika, możesz uruchomić:

echo "$SHELL"

Na przykład, jeśli używasz Bash, powinieneś otrzymać następujące dane wyjściowe:

/bin/bash

Jeśli nie zmieniłeś żadnej konfiguracji, powinno być Bash, ponieważ Bash to domyślna powłoka w Ubuntu.

    
odpowiedział kos 28.02.2015, 05:02
źródło
3

Pozostałe odpowiedzi zwykle wykorzystują cechy specyficzne dla powłoki, ale próbujemy odkryć, z której powłoki korzystamy, aby przyjąć odpowiedź na problem. Na przykład żadna z odpowiedzi nie będzie działać na ryby.

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

Zamiast tego użyj składni $$ w wywołaniu sh, ale wtedy szukamy PPID, a nie PID. Użyj PPID, aby znaleźć cmd.

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

Dzięki za ulepszenie @muru

    
odpowiedział Evan Benn 06.04.2018, 06:00
źródło

Przeczytaj inne pytania na temat tagów