如何为当前会话自动设置$ DISPLAY变量

11 linux shell vnc

我看到$ display设置为localhost:0,0如果我在vnc服务器上运行这可能不正确,有没有办法在我的登录脚本中自动设置它?

Jon*_*han 9

你用Bash吗?转到主目录中的.bashrc文件并设置变量,然后将其导出.

DISPLAY = localhost:0.0; 导出显示

如果要为所有用户执行此操作,可以使用/ etc/bashrc.

您可能还想查看〜/ .bash_profile和/ etc/profile

编辑:

function get_xserver ()
{
    case $TERM in
       xterm )
            XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(' )    
            XSERVER=${XSERVER%%:*}
            ;;
        aterm | rxvt)           
            ;;
    esac  
}

if [ -z ${DISPLAY:=""} ]; then
    get_xserver
    if [[ -z ${XSERVER}  || ${XSERVER} == $(hostname) || \
      ${XSERVER} == "unix" ]]; then 
        DISPLAY=":0.0"          # Display on local host.
    else
        DISPLAY=${XSERVER}:0.0  # Display on remote host.
    fi
fi

export DISPLAY
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 8

这是我刚刚敲了一下的东西.它检查上次启动的"gnome-session"进程的环境(当VNC启动会话/窗口管理器时,正确设置了DISPLAY).将"gnome-session"替换为VNC服务器在启动时启动的任何进程的名称.

PID=`pgrep -n -u $USER gnome-session`
if [ -n "$PID" ]; then
    export DISPLAY=`awk 'BEGIN{FS="="; RS="\0"}  $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ`
    echo "DISPLAY set to $DISPLAY"
else
    echo "Could not set DISPLAY"
fi
unset PID
Run Code Online (Sandbox Code Playgroud)

您应该只能将其放在.bashrc文件中.

  • 导出行可以简化为:`export $(grep -z ^ DISPLAY =/proc/$ PID/environ)`. (2认同)