2014-10-29 64 views
8

我有我的.emacs以下幾點:TRAMP忽略流浪漢遠程路徑

(require 'tramp) 
(add-to-list 'tramp-remote-path "/some/path") 
(add-to-list 'tramp-remote-path 'tramp-default-remote-path) 

所以當我打開使用通過ssh流浪漢文件,我希望我的PATH包含/some/path。相反,運行M-! echo $PATH返回

/bin:/usr/bin:/usr/sbin:/usr/local/bin 

即使我在.bashrc.profile設置export PATH=/hwdisks/data/modules/pkg/git/1.8.4.1/bin/git:$PATHPATH設置不正確。

在流浪漢日誌,*debug tramp/ssh remotehost*,我可以看到流浪漢明確設置PATH

12:28:34.202135 tramp-send-command (6) # PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin; export PATH 

如果我包括我的.bashrcecho "in .bashrc",它出現在流浪漢日誌,所以我知道流浪漢正在讀它。

如何讓流浪漢使用正確的PATH

Emacs的版本:24.2.1
流浪漢版本:2.2.3-24.1

回答

6

尷尬,答案是流浪漢手冊:

另一種可能性是重新使用的路徑設置你的遠程帳戶。通常,這些設置將被覆蓋,因爲它們可能對tramp沒有用處。佔位符tramp-own-remote-path保留這些設置。您可以通過

(add-to-list 'tramp-remote-path 'tramp-own-remote-path) 

激活它,我仍然不知道爲什麼它會忽略加tramp-remote-path其他路徑。

3

我在tramp手冊中讀到了這個,並試了一下。 新增

(add-to-list 'tramp-remote-path 'tramp-own-remote-path) 

然後退出Emacs的,除去~/.emacs.d/tramp,並重新啓動作爲解釋here

M-! echo $PATH仍然顯示的tramp-default-remote-path,而不是在我.bashrc設置的值的值。

該問題看起來是我對加載配置文件的理解。 方式流浪漢調用遠程shell來獲得遠程路徑:

/bin/sh -l -c 'echo $PATH' 
/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin 

既然是bash調用作爲登錄shell和/bin/sh讀取.profile,而不是.bash_profile.bashrc

我發現這在bash手冊頁:

如果bash以名稱sh啓動,它試圖儘可能地模仿SH的 歷史版本的啓動過程,同時符合 POSIX標準。當以交互式登錄shell或具有--login選項的非交互式shell進行調用時,它首先會嘗試從/ etc/profile和〜/ .profile執行命令,並按此順序執行命令。 --noprofile選項可以用來抑制這種行爲。當以名稱sh作爲 交互式shell進行調用時,bash會查找變量ENV,如果已定義該變量,則將其值擴展爲 ,並將擴展值用作要讀取和執行的文件名稱 。由於作爲sh調用的shell不會嘗試讀取並執行來自其他任何啓動文件的命令,因此--rcfile選項沒有 效果。使用名稱sh調用的非交互式shell不會嘗試 讀取其他任何啓動文件。當作爲sh調用時,bash在讀取啓動文件後進入posix模式 。

我通常只配置~/.bashrc~/.bash_profile對於流浪漢正常工作的樣子,我應該將我的.bash_profile.profile

希望這會幫助別人。

  • GNU Emacs的:25.0.94.2流浪漢:2.2.13.25.1