3

当我在我的机器上使用 VNC 时,我试图将 gvim 作为我的默认编辑器。但是当我通过 SSH 登录时,希望将 vim 作为我的默认编辑器。我不确定如何区分我的 .bashrc 文件以自动执行此操作。同样,有没有一种方法可以让我知道会话是通过与我的机器直接连接的控制台。

谢谢

4

3 回答 3

2

听起来您实际上并不关心它是 SSH、VNC 还是控制台。你关心你是否有一个 GUI 来运行 gvim。

您可以通过以下方式检查$DISPLAY

[[ $DISPLAY ]] && export EDITOR=gvim || export EDITOR=vim

这会将您的编辑器设置gvim为 VNC 以及 XDMCP、NX、Chromoting、本地图形登录、带有图形转发的 ssh 以及任何其他带有 X11 显示的东西。

它会将您的编辑器设置vim为常规 SSH 登录以及 Telnet、rsh、串行控制台、本地登录和所有其他基于非 X11 的登录。

于 2013-09-26T02:02:53.347 回答
0

环境变量$SSH_AUTH_SOCK应该在任何 SSH 会话中设置。所以在你的.bashrc,你可以有

if [ -n "$SSH_AUTH_SOCK" ]
then
    # code for SSH sessions here
fi

至于确定您是否在直接连接的控制台上,请参阅此问题;要在 shell 中(而不是从 C 程序中)获取 tty 名称,请使用tty命令。

于 2013-09-25T19:53:31.500 回答
0

感谢来自 ajk 的提示,我查看了变量集,发现 VNCDESKTOP 仅在 vnc 的情况下设置。我使用了上面建议的方式,它现在可以工作了。

虽然我仍然希望有人能建议这是否是一个完整的解决方案

于 2013-09-26T00:30:21.497 回答