如何在bashrc文件中区分ssh会话或vnc会话或控制台会话

时间:2013-09-25 19:10:02

标签: bash ssh console vnc

当我将VNC用于我的机器时,我试图将gvim保留为我的默认编辑器。但是当我通过SSH登录时,想要将vim保留为我的默认编辑器。我不确定如何区分我的.bashrc文件来自动执行此操作。同样,有没有办法让我知道会话是通过与我的机器直接连接的控制台。

谢谢

3 个答案:

答案 0 :(得分: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的登录。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

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