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.