连接到 Linux 机器时设置 $DISPLAY 的技巧
发布: (2026年1月31日 GMT+8 06:40)
2 min read
原文: Dev.to
Source: Dev.to
背景
我在 Windows 机器上运行 X 服务器,并通过 SSH 登录到 Linux 系统。
最初,我手动将 DISPLAY 变量设置为 Windows 的 IP 地址,然后启动 xeyes、xclock、xterm 等 X 客户端。
在为 xclock 创建别名并把这些命令写进脚本后,我仍然需要在每次连接时手动设置 DISPLAY。
我发现客户端机器的 IP 地址存放在 SSH_CLIENT 和 SSH_CONNECTION 环境变量中。通过提取 SSH_CLIENT 的第一个字段,就可以自动获取 IP 地址。
解决方案
- 从
SSH_CLIENT中提取客户端 IP 地址。 - 构建
DISPLAY值(:0)。 - 导出
DISPLAY,让 X 客户端知道渲染位置。 - 当未通过 SSH 连接时,回退到
localhost。 - 将上述逻辑放入
~/.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 客户端。