TRAMP忽略流浪汉远程路径
我有我的.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:$PATH
,PATH
设置不正确。
在流浪汉日志,*debug tramp/ssh remotehost*
,我可以看到流浪汉明确设置PATH
:
12:28:34.202135 tramp-send-command (6) # PATH=/bin:/usr/bin:/usr/sbin:/usr/local/bin; export PATH
如果我包括我的.bashrc
echo "in .bashrc"
,它出现在流浪汉日志,所以我知道流浪汉正在读它。
如何让流浪汉使用正确的PATH
?
Emacs的版本:24.2.1
流浪汉版本:2.2.3-24.1
尴尬,答案是流浪汉手册:
另一种可能性是重新使用的路径设置你的远程帐户。通常,这些设置将被覆盖,因为它们可能对tramp没有用处。占位符tramp-own-remote-path保留这些设置。您可以通过
(add-to-list 'tramp-remote-path 'tramp-own-remote-path)
激活它,我仍然不知道为什么它会忽略加tramp-remote-path
其他路径。
我在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