Siehe auch den Docstring für die Variable tramp-methods
. Dieser Teil scheint bemerkenswert:
tramp-remote-shell
Dies gibt den Shell auf der Remote-Host zu verwenden. Diese MUSS eine Bourne-artige Shell sein. Es ist normalerweise nicht notwendig, dies auf einen anderen Wert als "/ bin/sh": Tramp möchte eine Shell verwenden, die Erweiterung zu erweitern, aber es kann dafür suchen. Beachten Sie auch, dass "/ bin/sh" für alle Unixen existiert, . Dies trifft möglicherweise nicht für den Wert zu, den Sie verwenden möchten. Sie wurden gewarnt.
Edit:
Also hier ist ein Weg, eine neue Methode auf einem vorhandenen („SCPC“ in diesem Beispiel) auf der Grundlage schaffen könnte, und dann der benutzerdefinierten Methode ein anderen Remote-Shell geben :
(require 'tramp)
(let* ((base-method (cdr (assoc "scpc" tramp-methods)))
(new-method (copy-tree base-method))
(rshell (assq 'tramp-remote-shell new-method)))
(setcdr rshell "/system/bin/sh")
(add-to-list 'tramp-methods (cons "android" new-method)))
Beachten Sie, dass in Emacs 23 (Tramp 2.1.20) wurde diese Eigenschaft tramp-remote-sh
benannt. In Emacs 24 (Tramp 2.2.3-24.1) wurde es geändert in tramp-remote-shell
.
Und ich vermute, dass Sie diese Methode standardmäßig für Ihren angegebenen Host mit diesem verwenden können:
(add-to-list
'tramp-default-method-alist
(list "\\`myhost\\'" nil "android"))
Es sieht so aus, dass die Shell für alle Zugriffe über eine bestimmte Methode (z. B. ssh) festgelegt wird. Gibt es eine Möglichkeit, dies pro Host festzulegen? –
Sie möchten wahrscheinlich eine neue Methode hinzufügen, die die erforderliche tram-remote-Shell verwendet, aber ansonsten mit der Methode identisch ist, auf der Sie sie aufbauen, und diese dann für den Zugriff auf den betreffenden Host verwenden. – phils
Siehe auch die 'tramp-default-method-alist'-Variable, um Hosts Methoden zuzuordnen. – phils