如何从 sudo 用户检查 root 环境变量?

如何从 sudo 用户检查 root 环境变量?

我如何从 sudo 用户检查 root 环境变量?我尝试了 su 和 sudo 的各种键和组合,但没有成功。

例如,普通用户的$HISTFILESIZE=2000,root用户的$HISTFILESIZE=9999。

vagrant@default-debian-78-64-nocm:~$ echo $HISTFILESIZE
2000
vagrant@default-debian-78-64-nocm:~$ sudo -i
root@default-debian-78-64-nocm:~# echo $HISTFILESIZE
9999

但是当我尝试通过 sudo 获取 root $HISTFILESIZE 时 - 它总是返回 2000:

vagrant@default-debian-78-64-nocm:~$ sudo -i echo $HISTFILESIZE
2000
vagrant@default-debian-78-64-nocm:~$ sudo -i su - -c "echo $HISTFILESIZE"
2000
vagrant@default-debian-78-64-nocm:~$ sudo -i bash -c "echo $HISTFILESIZE"
2000
vagrant@default-debian-78-64-nocm:~$ sudo -i bash -l -c "echo $HISTFILESIZE"
2000

答案1

你的 shell 会在变量到达 之前就将其展开sudo。而不是

sudo -i echo $HISTFILESIZE

以及所有的变体,您需要使用\如下所示的方式对其进行转义:

sudo -i bash -c "echo \${HISTFILESIZE}"

再编辑一次:需要用括号括住变量,它可能包含空格

相关内容