在 google 云上的 bash 中获取正确的 $HOME 目录

Getting correct $HOME directory in bash on google cloud

我的 bash 脚本有以下代码,我在 google 云计算引擎上执行它。

mv $HOME/openvpn-2.4.0/ /etc/openvpn

这里的问题是 $HOME 扩展为 /root 而不是 /home/myusername

echo $HOME 在命令提示符下按预期给出 /home/myusername

我做错了什么?

编辑 1

如果我使用 sudo 执行 bash 脚本, $HOME 变量给出 /root ,但是当我不使用 sudo 执行脚本时, $HOME 变量给出 /home/myusername 作为预计在 google 云端

当你使用 sudo 运行 bash 脚本时,它 运行 以 root 用户身份执行脚本,因此 $HOME 变量给出 /root。

一个选项是将 $HOME 环境变量作为命令行选项传递给您的 bash 脚本。然后,您可以在 bash 脚本中以 $1.

的形式访问此变量的值

我用$SUDO_USER找到主目录

HOME=$(getent passwd $SUDO_USER | cut -d: -f6)