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


7

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?

Antworten:


8

Was Sie dort sehen, ist die lokale Login-Shell.

ssh user@host "echo $SHELL"

Mit dem oben genannten $SHELLwird erweitert, bevor ssh ausgeführt wird, da es in doppelte Anführungszeichen eingeschlossen ist. Auf der Remote-Seite laufen Sie also echo /bin/zshstatt echo $SHELL.

Verwenden Sie einfache Anführungszeichen, um eine $SHELLlokale Erweiterung zu vermeiden .

ssh user@host 'echo "$SHELL"'

Weitere Informationen hierzu finden Sie in BashFAQ 96 .


1

Sie oder eine andere Person müssen 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 empfehlen, dass zshes eine großartige Shell mit vielen sehr nützlichen Funktionen ist, und wenn sie aktiviert ist, können Sie Bash nicht verwenden

#!/bin/sh 

führt Ihre Skripte weiterhin unter bash aus.


das hilft nicht :( Tatsächlich habe ich bemerkt, dass chsh denkt, dass meine Standard-Shell bereits Bash ist (von dem 'aktuellen Wert', den sie mir gezeigt hat)
Raghuram

Mein einziger anderer Vorschlag wäre, dann auf den Schlüssel zu schauen. Sie können erzwungene Befehle über Tasten ausführen.
Panther

0

Informieren Sie sich über Login- und Nicht-Login-Shells. Mein Verdacht ist , dass Sie etwas komisch in tust ~/.bash_profile, ~/.bashrcoder ~/.profile, so dass deren Inhalte für etwas überprüfen , die dies tun würde.


Es gibt nichts, was ich in den ~/.bashrcoder ~/.profileDateien verdächtig finden kann (es gibt keine ~/.bash_profileDatei). Insbesondere gibt es keinen Schalter oder Verweis auf zsh. Gibt es noch etwas, das mir fehlen könnte? Wenn es hilft, ist dies eine ec2-Instanz mit dem öffentlichen AMI: ami-349b495d
Raghuram
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.