连接到 Linux 机器时设置 $DISPLAY 的技巧

发布: (2026年1月31日 GMT+8 06:40)
2 min read
原文: Dev.to

Source: Dev.to

背景

我在 Windows 机器上运行 X 服务器,并通过 SSH 登录到 Linux 系统。
最初,我手动将 DISPLAY 变量设置为 Windows 的 IP 地址,然后启动 xeyesxclockxterm 等 X 客户端。
在为 xclock 创建别名并把这些命令写进脚本后,我仍然需要在每次连接时手动设置 DISPLAY

我发现客户端机器的 IP 地址存放在 SSH_CLIENTSSH_CONNECTION 环境变量中。通过提取 SSH_CLIENT 的第一个字段,就可以自动获取 IP 地址。

解决方案

  1. SSH_CLIENT 中提取客户端 IP 地址。
  2. 构建 DISPLAY 值(:0)。
  3. 导出 DISPLAY,让 X 客户端知道渲染位置。
  4. 当未通过 SSH 连接时,回退到 localhost
  5. 将上述逻辑放入 ~/.bashrc,使其在每次交互式登录时执行。

示例脚本(放入 ~/.bashrc

# Get the client IP from SSH_CLIENT (if present)
host=$(echo "${SSH_CLIENT}" | cut -f1 -d' ')

# If not connected via SSH, default to localhost
if [ -z "$host" ]; then
    host=localhost
fi

# Build the DISPLAY variable and export it
export DISPLAY="${host}:0"

将此内容添加到 ~/.bashrc 后,任何新的终端会话(包括 SSH 登录)都会正确设置 DISPLAY,从而无需额外手动操作即可启动 X 客户端。

Back to Blog

相关文章

阅读更多 »