Wenn ich echo $SHELL
die Ausgabe starte /bin/tcsh
, heißt das, dass ich eine tcsh
Shell starte. Aber zum Beispiel, wenn ich den folgenden Befehl gebe
alias emacs 'emacs -nw'
Ich erhalte folgenden Fehler:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
und wenn ich es ausstelle alias emacs="emacs -nw"
läuft es einwandfrei!
Das ist verwirrend, da ich laufe, tcsh
aber die Befehle von interpretiert werden bash
.
Was könnte der Grund sein?
tcsh/csh
hat seine aktuelle Muschel in$shell
Antworten:
$SHELL
Dies ist nicht unbedingt Ihre aktuelle Shell, sondern die Standardanmeldeshell . Versuchen Sie, die von Ihnen verwendete Shell zu überprüfenDies sollte unter den neuesten Unix / Linux-Versionen funktionieren
ps
, die die BSD-Syntax unterstützen. Ansonsten ist dies die tragbare (POSIX) MethodeDas sollte ungefähr so aussehen, wenn Sie ausgeführt werden
tcsh
:Wenn Sie
tcsh
Ihre Standard-Shell sein möchtenchsh
, legen Sie sie mit fest.quelle
chsh
,.bashrc
werden nur gelesen, wenn man i) bash ausgeführt wird und ii) es als interaktive, nicht-Login - Shell ausgeführt wird . Wie melden Sie sich bei diesem Computer an?ps $$
Über die Befehlszeile können Sie auch mithilfe der
$0
Variablen bestimmen, welche Shell Sie verwenden. z.B:Hinweis: Sie können die Shell nicht mithilfe von $ 0 in einem Skript ermitteln, da $ 0 das Skript selbst ist.
quelle
Das funktioniert unter Linux:
oder, wenn Sie eine stärkere Auswahl benötigen (mehr Systeme):
quelle
Dies ist eine Ergänzung zu allen oben genannten besseren Antworten. Ich hatte ein winziges Problem bei der Identifizierung eines Strichs. schien richtig zu teilen:
Gut für die Fehlersuche in engen Stellen ist alles. Prost.
quelle