TRAMP ignoriert Tramp-Remote-Pfad

8

Ich habe Folgendes in meinen .emacs:

%Vor%

Wenn ich also eine Datei mit tramp über ssh öffne, erwarte ich, dass mein PATH /some/path enthält. Stattdessen gibt M-! echo $PATH den Befehl

zurück %Vor%

Auch wenn ich export PATH=/hwdisks/data/modules/pkg/git/1.8.4.1/bin/git:$PATH in .bashrc oder .profile , PATH nicht richtig gesetzt habe.

Im Tramp-Protokoll, *debug tramp/ssh remotehost* , kann ich sehen, dass tramp explizit PATH :

setzt %Vor%

Wenn ich echo "in .bashrc" in mein .bashrc einfüge, erscheint es im Tramp-Protokoll, also weiß ich, dass tramp es liest.

Wie kann ich dem Tramp die richtige PATH geben?

Emacs Version: 24.2.1
Tramp-Version: 2.2.3-24.1

    
Yossarian 29.10.2014, 12:41
quelle

2 Antworten

6

Peinlich ist die Antwort im Tramp-Handbuch:

  

Eine andere Möglichkeit besteht darin, die Pfadeinstellungen Ihres Remote-Kontos bei der Anmeldung erneut zu verwenden. Diese Einstellungen werden normalerweise überschrieben, da sie möglicherweise nicht für Tramps nützlich sind. Der Platzhalter tramp-own-remote-path behält diese Einstellungen bei. Sie können es über

aktivieren
%Vor%

Ich bin mir immer noch nicht sicher, warum es die anderen Pfade ignoriert, die zu tramp-remote-path hinzugefügt wurden.

    
Yossarian 30.10.2014, 09:41
quelle
3

Ich habe das im Tramp-Handbuch gelesen und es versucht. Hinzugefügt

%Vor%

Dann wurde emacs beendet, ~/.emacs.d/tramp entfernt und wie in hier

Aber M-! echo $PATH zeigt immer noch den Wert von tramp-default-remote-path anstelle des Wertes in meinem .bashrc .

Das Problem scheint zu verstehen, wie Profile geladen werden. Die Art und Weise wie Tramp die entfernte Shell aufruft, um den Remote PATH zu erhalten:

%Vor%

Da bash als Login-Shell aufgerufen wird und als /bin/sh lautet .profile anstelle von .bash_profile oder .bashrc .

Ich habe das in bash manual page gefunden:

  

Wenn bash mit dem Namen sh aufgerufen wird, versucht es das Startverhalten von zu imitieren   historische Versionen von sh so nah wie möglich, während mit den   POSIX-Standard auch. Wenn sie als interaktive Login-Shell oder a   nicht interaktive Shell mit der Option --login, versucht es zunächst zu lesen und   Führe Befehle aus / etc / profile und ~ / .profile in dieser Reihenfolge aus. Das   Mit der Option --noprofile kann dieses Verhalten verhindert werden. Wenn als ein aufgerufen wird   interactive shell mit dem Namen sh, bash sucht nach der Variable ENV, expandiert   Wenn der Wert definiert ist, wird der Wert als Name einer Datei verwendet   lesen und ausführen. Da eine Shell als sh aufgerufen wird, versucht sie nicht zu lesen und   Ausführen von Befehlen aus anderen Startup-Dateien, die Option --rcfile hat keine   bewirken. Eine nicht interaktive Shell, die mit dem Namen sh aufgerufen wird, versucht nicht   lies andere Startup-Dateien. Wenn shash aufgerufen wird, tritt bash in den Posix-Modus ein   nach dem Startup-Dateien werden gelesen.

Normalerweise konfiguriere ich nur ~/.bashrc und ~/.bash_profile Damit tramp korrekt funktioniert sieht es so aus, als ob ich meine .bash_profile nach .profile

verschieben sollte

Hoffe, das hilft anderen.

  • GNU Emacs: 25.0.94.2 Tramp: 2.2.13.25.1
Oden Godner 17.06.2016 16:56
quelle

Tags und Links