![运行启动脚本时出错:在 GCP 上运行的 Redhat 实例中未设置主环境变量](https://linux22.com/image/734009/%E8%BF%90%E8%A1%8C%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E6%97%B6%E5%87%BA%E9%94%99%EF%BC%9A%E5%9C%A8%20GCP%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%20Redhat%20%E5%AE%9E%E4%BE%8B%E4%B8%AD%E6%9C%AA%E8%AE%BE%E7%BD%AE%E4%B8%BB%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
我不太明白用于运行启动脚本的 shell 环境。它与登录会话有何区别?
如果我设置一个简单的启动脚本来打印环境变量:
metadata
items: - key: startup-script value: ' printenv;'
我会有这样的东西:
Feb 20 15:16:19 xxxx startup-script[1112]: INFO startup-script: OLDPWD=/ Feb 20 15:16:19 xxxx startup-script[1112]: INFO startup-script: PATH=/usr/local/sbin:/usr/local/bin:/usr/ Feb 20 15:16:19 xxxx startup-script[1112]: INFO startup-script: PWD=/opt Feb 20 15:16:19 xxxx startup-script[1112]: INFO startup-script: LANG=en_US.UTF-8 Feb 20 15:16:19 xxxx startup-script[1112]: INFO startup-script: SHLVL=2 Feb 20 15:16:19 gceeuw1lin0003 startup-script[1112]: INFO startup-script: _=/usr/bin/printenv
如果我在 ssh 会话中执行 printenv 命令,我可以看到更多变量,如 HOSTNAME、HOME、SHELL……等等。
我尝试在启动时安装一个软件(专有软件),但由于 $HOME 变量而失败。
Could not expand the path using $HOME
我尝试在软件安装之前在启动脚本中设置 HOME 变量,但是失败了,提示:
invalid command name "wm"
当我尝试使用交互式 shell 进行相同的安装时,一切都运行正常!甚至更好的是,即使我使用以下命令从交互式会话强制重新运行启动脚本,它也能正常工作:
sudo google_metadata_script_runner --script-type startup --debug
我正在寻找对所发生事情的合理解释?为什么它是从交互式 shell 而不是从启动脚本运行的?
知道如何修复这个问题吗?
先感谢您!
答案1
您是否尝试过在自动化选项卡上运行启动脚本?我发现通常不用于此目的,请检查启动脚本 GCE文档以确保您使用的是正确的脚本,如下所示:
#! /bin/bash
printenv