Standard-Shell für Remote-Befehle über SSH

Standard-Shell für Remote-Befehle über SSH

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 $SHELLwird vor dem Ausführen von ssh erweitert, da es in Anführungszeichen eingeschlossen ist. Auf der Remote-Seite führen Sie also echo /bin/zshanstelle von aus echo $SHELL.

Verwenden Sie einfache Anführungszeichen, um $SHELLeine 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, zshdass 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_profileInformieren 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.

verwandte Informationen