使用ssh的Tramp不会提供.bash_profile / .profile

时间:2012-05-05 15:13:06

标签: bash emacs aquamacs tramp

我正在使用Aquamacs(使用emacs 24和tramp 2.2.3版的OSX图形化emacs)来编辑远程服务器上的某些文件。 Tramp设置为使用 ssh ,在编辑文件方面效果很好。

在编译时失败,因为编译器不在路径中。似乎tramp不会提供任何配置文件,如 .profile .bash_profile 。 / bin / sh是/ bin / bash的链接,所以bash应该是tramp使用的shell。在远程服务器上的emacs内启动的shell也不会提供任何内容。 来自常规终端仿真器(在OS X上尝试终端 X11 )的ssh连接按预期工作(一切来源正确)。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

  

/ bin / sh是/ bin / bash的链接,所以bash应该是使用的shell   流浪汉。

它不一样。当调用为“sh”时,它将表现得像sh而不是 bash,因此bash特定的rc / profile文件(例如〜/ .bash_profile, 〜/ .bashrc)将不会被采购。但是会读取〜/ .profile。您的 问题可能是你正在使用bash语法设置你的东西 〜/ .profile中。

这不起作用:

export PATH=/some/path:$PATH

但这会:

PATH=/some/path:$PATH
export PATH

答案 1 :(得分:1)

我遇到了这个问题,从我的shell历史中可以看出,tramp将/bin/sh作为非登录shell执行,这意味着~/.profile将不会被执行。

这听起来像emacs手册所说的here

查找远程路径的另一种方法是使用由远程主机分配给远程用户的路径。登录后,陷阱通常不会保留此远程路径。但是,tramp-own-remote-path保留路径值,可用于更新tramp-remote-path。

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

请注意,仅当您的远程/ bin / sh shell支持登录参数“ -l”时,此方法才有效。

如上所述,将'tramp-own-remote-path添加到tramp-remote-path到我在历史记录中看到的命令中添加了-l标志,并按预期来源获取了~/.profile

the accepted answer中对Ivan's comment中链接的问题进行了描述,但并未提及通过采购~/.profile来尊重PATH,这意味着可以进行其他环境自定义在该文件中完成。)