
Ich habe das folgende Setup auf meiner Ubuntu 10.04-Box
~$ echo $SHELL
/bin/bash
~$ grep $USER /etc/passwd
ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash
Wenn ich jedoch einen Remote-Befehl ausführe, scheint zsh die Standard-Shell zu sein:
$> ssh -i /path/to/ssh/key ubuntu@<my-host> "echo $SHELL"
/bin/zsh
Wie behebe ich das?
Antwort1
Was Sie dort sehen, ist die lokale Anmelde-Shell.
ssh user@host "echo $SHELL"
Im obigen Beispiel $SHELL
wird vor dem Ausführen von ssh erweitert, da es in Anführungszeichen eingeschlossen ist. Auf der Remote-Seite führen Sie also echo /bin/zsh
anstelle von aus echo $SHELL
.
Verwenden Sie einfache Anführungszeichen, um $SHELL
eine lokale Erweiterung zu vermeiden.
ssh user@host 'echo "$SHELL"'
SehenBashFAQ 96für weitere Informationen.
Antwort2
Sie oder jemand anderes muss Ihren Remote-Host mit konfiguriert haben zsh
. Um wieder zu Bash zu wechseln, verwenden Sie:
chsh -s /bin/bash
auf Ihrem Remote-Host.
Abgesehen davon würde ich jedoch empfehlen, zsh
dass es sich um eine großartige Shell mit vielen sehr nützlichen Funktionen handelt und dass die Aktivierung Sie nicht daran hindert, Bash zu verwenden
#!/bin/sh
führt Ihre Skripte weiterhin unter Bash aus.
Antwort3
~/.bash_profile
Informieren Sie sich über Login- und Nicht-Login-Shells. Ich vermute, dass Sie in , ~/.bashrc
, oder etwas Komisches machen ~/.profile
, suchen Sie also in deren Inhalt nach etwas, das dies tun könnte.