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

str*_*man 3 bash sudo environment-variables

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

比如普通用户$HISTFILESIZE=2000,root用户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
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过 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
Run Code Online (Sandbox Code Playgroud)

HBr*_*ijn 5

您的 shell 会在变量到达sudo. 代替

sudo -i echo $HISTFILESIZE
Run Code Online (Sandbox Code Playgroud)

以及所有变体,您需要使用 a 进行转义\,如下所示:

sudo -i bash -c "echo \${HISTFILESIZE}"
Run Code Online (Sandbox Code Playgroud)

另一个编辑:需要括号变量,它可能包含空格