我有一个需要以root身份运行的sh脚本,但是它由最终用户使用sudo运行.当使用sudo运行时〜/指向/ root时如何获取用户主目录?
Mic*_*jer 42
尽量避免使用eval.特别是根烫发.
你可以做:
USER_HOME=$(getent passwd $SUDO_USER | cut -d: -f6)
Run Code Online (Sandbox Code Playgroud)
更新:
这就是为什么要避免使用eval.
dog*_*ane 28
用户的主目录是~$SUDO_USER.您可以使用eval如下:
USER_HOME=$(eval echo ~${SUDO_USER})
echo ${USER_HOME}
Run Code Online (Sandbox Code Playgroud)
$ sudo env |grep USER
USER=root
USERNAME=root
SUDO_USER=glglgl
Run Code Online (Sandbox Code Playgroud)
所以你可以访问$SUDO_USER并询问系统的homedir getent passwd $SUDO_USER | cut -d: -f6.