Auf welcher Shell verwende ich?

Auf welcher Shell verwende ich?

Wenn ich ausführe, echo $SHELLwird die Ausgabe angezeigt /bin/tcsh, was bedeutet, dass ich eine tcshShell ausführe. Aber wenn ich beispielsweise den folgenden Befehl ausgebe

alias emacs 'emacs -nw' 

Ich erhalte die folgende Fehlermeldung:

bash: alias: emacs: not found
bash: alias: emacs -nw: not found

und wenn ich es ausgib, alias emacs="emacs -nw"läuft es einwandfrei!

Dies ist verwirrend, da ich zwar ausführe, tcshdie Befehle jedoch von interpretiert werden bash.

Was könnte der Grund sein?

Antwort1

$SHELList nicht unbedingt Ihre aktuelle Shell, es ist dieStandard-AnmeldeshellUm zu überprüfen, welche Shell Sie verwenden, versuchen Sie

ps $$

Dies sollte auf den meisten aktuellen Unix/Linux-Versionen funktionieren, psdie die BSD-Syntax unterstützen. Andernfalls ist dies die portable (POSIX) Methode.

ps -p $$

Wenn Sie Folgendes ausführen, sollte es ungefähr Folgendes zurückgeben tcsh:

8773 pts/10   00:00:00 tcsh

tcshWenn Sie es als Ihre Standard-Shell verwenden möchten , legen Sie chshes fest.

Antwort2

Von der Kommandozeile aus können Sie mit der $0Variable auch bestimmen, welche Shell Sie verwenden. Beispiel:

~$ echo $0
/bin/bash


~$ ksh
$ echo $0
ksh

Hinweis: Sie können die Shell nicht mit $0 innerhalb eines Skripts bestimmen, da $0 das Skript selbst ist.

Antwort3

Dies ist eine Ergänzung zu allen besseren Antworten oben. Ich hatte einmal ein kleines Problem mit der Identifizierung des Bindestrichs; es schien richtig, dies mitzuteilen:

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | sh
ash (dash 0.5.5.1 ff)

curl -fsSL http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh | bash
bash 4.3.30(1)-release

Gut für die Fehlersuche an engen Stellen, das ist alles. Prost.

Antwort4

Auf einem Unix/Linux-Betriebssystem können mehrere Shells installiert sein. Sie können den folgenden Befehl in Ihr Terminal eingeben, um zu sehen, welche Shell Sie verwenden:

Unten ist die Liste,

  • Bourne Shell – sh
  • C-Shell – csh
  • T-Shell – tcsh
  • Korn Shell – ksh
  • Wiederauferstandene Shell – bash
  • Armaturenbrett-Shell
  • Z-Schale

Diese Liste ist nicht vollständig und es gibt noch viele weitere Shells.

Die Datei /etc/shells enthält eine Liste aller Shells, die in Ihrem System installiert sind. Führen Sie einfach den folgenden Befehl aus, um die installierten Shells herauszufinden.

$ cat /etc/shells

Führen Sie den Befehl grep in der Datei /etc/passwd aus, um die Standard-Shell zu kennen, wenn Sie sich beim Unix- oder Linux-Betriebssystem anmelden.

$ grep john /etc/passwd    

Sie können für denselben Zweck auch die Variable $SHELL verwenden.

echo $0
$ echo $SHELL

Das Ergebnis wird ungefähr wie folgt aussehen, wenn Sie denSchlag(Bourne Again - Die neue Shell) Terminal: Wenn auf Ihrem System mehrere Shells installiert sind, können Sie jederzeit die Shell wechseln.

woher wissen Sie also, welche Shell Sie momentan ausführen?

Verwenden Sie einfach den folgenden Befehl

-bash
$ ps -p $$

Ich denke, alle Ihre Fragen sind beantwortet. Wenn Sie noch Zweifel haben, können Sie sich andieser Quellartikel.

verwandte Informationen