Ich versuche, Emacs TRAMP zu verwenden, um auf Dateien über SSH auf einem Server zuzugreifen, der /bin/sh
nicht bereitstellt, und so erhalte ich den folgenden Fehler, wenn ich versuche, eine Verbindung herzustellen:
Gibt es eine Möglichkeit, TRAMP mitzuteilen, wo sich die entfernte Shell für diesen Server befindet? (Der "Server" ist ein verbundenes Android-Telefon, also bei /system/bin/sh
.)
Siehe auch den Docstring für die Variable tramp-methods
. Dieser Teil erscheint bemerkenswert:
tramp-remote-shell
Dies gibt die Shell an, die auf dem Remote-Host verwendet werden soll. Dies MUSS eine Bourne-ähnliche Shell sein. Es ist normalerweise nicht notwendig Setzen Sie dies auf einen anderen Wert als "/ bin / sh": Tramp möchte Verwenden Sie eine Shell, die Erweiterungen erweitert, aber es kann suchen dafür. Beachten Sie auch, dass "/ bin / sh" auf allen Unixen existiert, Dies trifft möglicherweise nicht auf den Wert zu, den Sie verwenden möchten. Sie wurden gewarnt.
Bearbeiten:
Hier können Sie also eine neue Methode basierend auf einer vorhandenen Methode ("scpc" in diesem Beispiel) erstellen und dann der benutzerdefinierten Methode eine andere Remote-Shell zuweisen:
%Vor% Beachten Sie, dass diese Eigenschaft in Emacs 23 (Tramp 2.1.20) tramp-remote-sh
genannt wurde. In Emacs 24 (Tramp 2.2.3-24.1) wurde es in tramp-remote-shell
geändert.
Und ich vermute, dass Sie diese Methode standardmäßig für Ihren angegebenen Host verwenden können:
%Vor%ssh erwartet die Verwendung der Login-Shell des Remote-Benutzers. Wenn Sie Root-Zugriff auf den Server haben, können Sie den Eintrag in der passwd-Datei ändern:
: blah: blah: benutzername: blah: / pfad / zu / shell
Oder einfach symlink / bin / sh dazu.
Ich glaube nicht, dass es eine Möglichkeit gibt, dies von der Seite des Kunden zu ändern, aber wenn das der Fall ist, müssten Sie ssh
, nicht TRAMP angeben. (Sie könnten dies über eine ssh_config-Datei tun.)
Bearbeiten: Ich stehe korrigiert.