在 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)
我的 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)