Wie überprüfe ich, welche Shell ich verwende?

258

Ich habe gelesen, dass das Terminal nur eine Shell ist, und Unix bietet verschiedene Arten von Shells an:

  • Bourne-Shell (sh)
  • C-Shell (csh)
  • TC-Shell (tcsh)
  • Korn-Shell (ksh)
  • Bourne Again-Shell (bash)

Fragen:

  • Wenn ich ein Terminalfenster öffne, welche Shell ist standardmäßig geöffnet?
  • Wie überprüfe ich, wie viele Schalen installiert sind?
  • Wie ändere ich die von meinem Konto verwendete Shell?
goutham 28.02.2015, 04:58
quelle

6 Antworten

312

Sie können den folgenden Befehl in Ihr Terminal eingeben, um zu sehen, welche Shell Sie verwenden:

echo $0

Das Ergebnis sieht in etwa wie das folgende aus, wenn Sie das Terminal bash ( Bourne Again Shell ) verwenden:

-bash
    
kingmilo 28.02.2015, 05:03
quelle
85

Um die Shell zu finden, die Sie in der Standardumgebung verwenden, können Sie den Wert der Umgebungsvariablen SHELL überprüfen:

echo $SHELL

Um die aktuelle Shell-Instanz zu finden, suchen Sie nach dem Prozess (Shell) mit der PID der aktuellen Shell-Instanz.

So finden Sie die PID der aktuellen Shell-Instanz:

echo "$$"

Jetzt den Prozess mit der PID finden:

ps -p <PID>

Zusammenfügen:

ps -p "$$"
    
heemayl 28.02.2015 05:06
quelle
18

$SHELL gibt die Standardshell an. $0 gibt die aktuelle Shell an.

Zum Beispiel: Ich habe bash als Standard-Shell, die ich für meine Terminal-App verwende. Aber für meine iTerm2-App verwende ich den Befehl, wenn sich das Fenster öffnet: /bin/ksh .

Also meine $0 gibt mir bei iTerm2 /bin/ksh . $SHELL gibt mir bei iTerm2 /bin/bash . $0 , $SHELL gibt mir /bin/bash am Terminal

    
nakulchawla09 18.11.2016 12:45
quelle
7

Um herauszufinden, welche Standard-Shell für Ihren Benutzer verwendet wird, können Sie Folgendes ausführen:

echo "$SHELL"

Wenn Sie beispielsweise Bash verwenden, sollten Sie die folgende Ausgabe erhalten:

/bin/bash

Wenn Sie keine Konfiguration geändert haben, sollte es Bash sein, da Bash die Standard-Shell von Ubuntu ist.

    
kos 28.02.2015 05:02
quelle
4

Bei den anderen Antworten werden in der Regel Shell-spezifische Funktionen verwendet. Wir versuchen jedoch herauszufinden, welche Shell wir verwenden, und nehmen daher die Antwort auf das Problem an. Zum Beispiel funktioniert keine der Antworten auf Fische.

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

Verwenden Sie stattdessen die $$ -Syntax in einem Aufruf von sh, aber dann suchen wir nach der PPID und nicht nach der PID. Verwenden Sie die PPID, um die cmd zu finden.

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

Danke für die Verbesserung @muru

    
Evan Benn 06.04.2018 06:00
quelle
0

Im ursprünglichen Beitrag wurden drei Fragen gestellt. Die Antworten beziehen sich auf die erste Frage "Welche Shell wird beim Öffnen eines Terminalfensters standardmäßig geöffnet?" Sie beantworten auch eine Frage, die NICHT gestellt wurde, nämlich "Wie kann ich herausfinden, welche Shell aktuell im Terminal läuft?" Soweit ich sehen kann, hat jedoch weder die zweite noch die dritte gestellte Frage beantwortet: "Wie überprüfe ich, wie viele Schalen installiert sind?" und "Wie ändere ich die von meinem Konto verwendete Shell?"

  • Um zu antworten "Wie überprüfe ich, wie viele Schalen installiert sind?" Der folgende Befehl listet alle verfügbaren Shells auf:

cat / etc / shells

Bei einer Standardinstallation von Ubuntu 18.10 ergibt dies beispielsweise:

# / etc / shells: gültige Login-Shells

/ bin / sh

/ bin / dash

/ bin / bash

/ bin / rbash

Allerdings ist sh standardmäßig ein symbolischer Link zum Bindestrich, während rbash mit der Option -r ("eingeschränkter Bash") eine Verknüpfung zu Bash herstellt, sodass es eigentlich nur zwei Shells gibt, nicht vier, wie in der obigen Liste angegeben. Der folgende Befehl zeigt Ihnen, ob eine der aufgelisteten Shells tatsächlich symbolische Links ist und wenn ja, wo sie verlinkt sind: ls -l / bin

  • Nun zur Frage "Wie ändere ich die von meinem Konto verwendete Shell?" Angenommen, dies bedeutet "Wie kann ich die Standard-Shell, die ein Terminal verwendet, dauerhaft ändern", eine Antwort unter link gibt
Michael D 07.11.2018 12:54
quelle

Tags und Links