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)
您的 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)
另一个编辑:需要括号变量,它可能包含空格