
Wenn ich ausführe, echo $SHELL
wird die Ausgabe angezeigt /bin/tcsh
, was bedeutet, dass ich eine tcsh
Shell 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, tcsh
die Befehle jedoch von interpretiert werden bash
.
Was könnte der Grund sein?
Antwort1
$SHELL
ist 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, ps
die 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
tcsh
Wenn Sie es als Ihre Standard-Shell verwenden möchten , legen Sie chsh
es fest.
Antwort2
Von der Kommandozeile aus können Sie mit der $0
Variable 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.