XAUTHORITY 环境变量在每次登录时重复设置

use*_*494 6 ssh xorg x11 xauth

我正在运行 Suse Linux 11.04 系统。我的问题是,当我以 root 身份重新登录 shell 时,xauth*****会在/root/目录中创建一个新的 Xauthority 表单文件。从 shell 退出后,会.xauth留下一些文件。我在其他系统上尝试过,但这不会发生。另外,为什么XAUTHORITY只为root系统中的其他用户而不是为我的其他用户设置了环境变量?

man xdm关于XAUTHORITY环境变量的说明如下

DisplayManager.DISPLAY.userAuthDir

当 xdm 无法写入通常的用户授权文件 ($HOME/.Xauthority) 时,它会在此目录中创建一个唯一的文件名,并将环境变量 XAUTHORITY 指向创建的文件。它默认使用 /tmp。

所以在我的系统中,我这样做:

xauth
Run Code Online (Sandbox Code Playgroud)

使用权限文件 /root/.xauthPpRsfU

xauth> 
Run Code Online (Sandbox Code Playgroud)

我退出[Ctrl+d]并重新登录,我看到现在它开始使用不同的.xauth*文件。

xauth
Run Code Online (Sandbox Code Playgroud)

使用权限文件 /root/.xauthq1xt4z

xauth>
Run Code Online (Sandbox Code Playgroud)

为什么xauth每次登录时都需要继续创建不同的文件?另外,当默认位置是 时,为什么它在 root 中/tmp/?我没有在配置文件中设置.DisplayManagaer.DISPLAY.userAuthDir为。/tmpxdm

我在任何其他系统上都没有看到这种行为。在 RHEL 和 Ubuntu 中一切正常。

对于指针,我不是唯一面临这个问题的人。我想这篇文章是类似的:`$XAUTHORITY` 出现在 su+tmux 上的“nowhere”

有谁知道我该如何解决这个问题?

Nik*_*ley 0

很久以前,我也问过同样的问题。谁在其流程环境中导出/设置了此变量。幸运的是,有人教我有一个shell脚本。这适用于 Solaris。在 Linux 上,解析进程的父环境可能略有不同。

我什至可以给你当时的对话: https: //groups.google.com/group/comp.unix.shell/browse_thread/thread/a91bf497add5544e/56dd2f64c4029734 ?hl=en&ie=UTF-8&q=mnikhil+who+exported +这个+变量&pli=1#56dd2f64c4029734

envtrace(){ 
ptree $$ | 
while read pid prog 
do 
  /usr/ucb/ps eww $pid 
done | 
sed -n ' 
s/^ *// 
/^[^0-9]/d 
h 
s/ .*/:/p 
g 
s/^.* \('"$1"'=[^ ]*\).*/\1/p 
g 
/^'"$$"' /q' 
} 
Run Code Online (Sandbox Code Playgroud)

envtrace 路径 envtrace OSTYPE