首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.bashrc保持X11转发

使用.bashrc保持X11转发
EN

Stack Overflow用户
提问于 2019-09-12 23:36:10
回答 3查看 294关注 0票数 1

当我切换到根用户(sudo su)时,我必须首先以我自己的身份运行xauth list,然后在我是根用户后运行xauth add <last entry from xauth list>。我找到了一个很好的小技巧,可以通过运行xauth add $(xauth -f ~<my username>/.Xauthority list|tail -1)让这一切变得更容易。这很好,但我想让它自动化。

因此,我进入/root/.bashrc并添加了以下内容:xauth add $(xauth -f ~$SUDO_USER/.Xauthority list|tail -1)

不幸的是,这会产生错误error in locking authority file ~<my user>/.Xauthority

如果我只需要用我的用户名替换$SUDO_USER就可以了。显然,$SUDO_USER的设置是正确的,因为它知道要查找正确的授权文件。那么,这是怎么回事?

EN

Stack Overflow用户

发布于 2021-07-04 20:55:16

真正的诀窍是使用eval来获得第二轮扩展。

考虑一下:

代码语言:javascript
复制
#!/bin/bash

echo ~$SUDO_USER
eval echo ~$SUDO_USER

a="~$SUDO_USER"
eval b="~$SUDO_USER"

echo a = "$a"
echo b = "$b"

第一个echo显示您可以使用普通命令执行此操作,但我并不建议您这样做。

赋值可能是一种更安全的方法,因为您可以精确地控制计算两次的内容。

如果你想知道,我的示例执行是这样的:

代码语言:javascript
复制
$ env SUDO_USER=n1 ./sample_script
~n1
/home/n1
a = ~n1
b = /home/n1
$ env SUDO_USER=gnats ./sample_script
~gnats
/var/lib/gnats
a = ~gnats
b = /var/lib/gnats
$ 

如您所见,这也避免了假设所有的主目录都在一个特定的目录中。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57910169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档