【问题标题】:How to set $HOME before startup script in Google Compute Engine如何在 Google Compute Engine 中的启动脚本之前设置 $HOME
【发布时间】:2017-11-26 12:26:41
【问题描述】:
在我的用例中,我尝试使用 $HOME 变量在实例启动中识别我的应用服务器路径。
我正在使用带有 $HOME 变量的启动脚本的 Google 计算引擎。但它看起来 $HOME 未设置或在谷歌云中执行启动脚本时未创建用户。
它会抛出 $HOME not set 错误。有什么解决方法吗?现在我必须在第一次创建后重新启动实例。这样在我重新启动时将设置 $HOME 变量。但这对于生产来说是一个丑陋的 hack。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签:
google-cloud-platform
google-compute-engine
google-cloud-endpoints
startup
【解决方案1】:
当用户尚未创建并且没有用户登录时,启动脚本以root身份执行(您可以检查它在启动时运行$ users并在重启后比较$ cat /etc/shadow的输出)。
老实说,我不明白重启如何让您的$HOME 在启动时被填充,因为在 Linux 上,HOME 环境变量是由登录程序设置的:
- 通过控制台登录、telnet 和 rlogin 会话
- sshd 用于 SSH
- gdm、kdm 或 xdm 用于图形会话的连接。
但是,如果您需要重新启动并且不想手动执行,您可以在创建机器后重新启动一次:
if [ -f flagreboot ]; then
...
your script
...
else
touch flagreboot
reboot
fi
另一方面,如果您知道哪个将是应用程序的 $HOME 路径,您可以考虑在启动时简单地导出此变量以手动填充它。
$ export HOME=/home/username