9

我正在使用 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 连接按预期工作(一切来源正确)。

有任何想法吗?

4

2 回答 2

4

/bin/sh 是指向 /bin/bash 的链接,因此 bash 应该是 tramp 使用的 shell。

这是不一样的。当作为“sh”调用时,它的行为类似于 sh 而不是 bash,因此不会获取 bash 特定的 rc/profile 文件(例如 ~/.bash_profile、~/.bashrc)。但是 ~/.profile 将被读取。您的问题可能是您正在使用 bash 语法在 ~/.profile 中设置内容。

这将不起作用:

export PATH=/some/path:$PATH

但这将:

PATH=/some/path:$PATH
export PATH
于 2012-05-05T18:05:00.567 回答
3

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

这听起来像 emacs 手册在这里所说的:

另一种查找远程路径的方法是使用远程主机分配给远程用户的路径。Tramp 在登录后通常不会保留此远程路径。但是,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

(这在Ivan 评论中链接的问题的已接受答案中有所描述,但没有提到 PATH 受到 sourcing 的尊重,这意味着可以在该文件中完成其他环境定制。)~/.profile

于 2020-04-12T09:59:31.150 回答