Google cloud platform 如何在Google计算引擎中设置$HOME启动前脚本

Google cloud platform 如何在Google计算引擎中设置$HOME启动前脚本,google-cloud-platform,google-compute-engine,google-cloud-endpoints,startup,Google Cloud Platform,Google Compute Engine,Google Cloud Endpoints,Startup,在我的用例中,我尝试使用$HOME变量在实例启动中标识我的应用程序服务器路径 我正在使用GoogleComputeEngine和一个使用$HOME变量的启动脚本。但在谷歌云中执行启动脚本时,似乎未设置$HOME或未创建用户 它抛出$HOME not set错误。有什么解决办法吗?现在我必须在第一次创建实例后重新启动该实例。以便在我重新启动时设置$HOME变量。但这是一个丑陋的生产黑客 有人能帮我吗?当用户尚未创建且没有登录用户时,启动脚本将作为根执行(您可以在启动时检查它运行$users并比较重

在我的用例中,我尝试使用$HOME变量在实例启动中标识我的应用程序服务器路径

我正在使用GoogleComputeEngine和一个使用$HOME变量的启动脚本。但在谷歌云中执行启动脚本时,似乎未设置$HOME或未创建用户

它抛出
$HOME not set
错误。有什么解决办法吗?现在我必须在第一次创建实例后重新启动该实例。以便在我重新启动时设置$HOME变量。但这是一个丑陋的生产黑客


有人能帮我吗?

当用户尚未创建且没有登录用户时,启动脚本将作为根执行(您可以在启动时检查它运行
$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

你有机会测试我的答案吗?成功了吗?