Назад | Перейти на главную страницу

Ошибка при запуске сценария запуска: переменная домашней среды не установлена ​​в экземпляре redhat, запущенном на GCP

Мне сложно понять среду оболочки, которая используется для запуска сценариев запуска. Какая разница с сеансом входа в систему?

Если я установлю простой скрипт запуска для печати переменных env:

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

И если я выполню команду printenv в сеансе ssh, я смогу увидеть намного больше переменных, таких как HOSTNAME, HOME, SHELL ... и т. Д.

Я пытаюсь установить программное обеспечение при запуске (проприетарное программное обеспечение), но это не удается из-за переменной $ HOME.

Could not expand the path using $HOME

Я попытался настроить HOME varibale в сценарии запуска непосредственно перед установкой программного обеспечения, но он не говорит:

invalid command name "wm"

Когда я пробую ту же установку с использованием интерактивной оболочки, все работает нормально! Более того, он работает, даже если я принудительно перезапускаю сценарий запуска из моего интерактивного сеанса, используя эту команду:

sudo google_metadata_script_runner --script-type startup --debug

Ищу логическое объяснение происходящему? почему он работает из интерактивной оболочки, а не из сценария запуска?

Есть идеи, как это исправить?

Заранее спасибо!

Вы пробовали запустить сценарий запуска на вкладке автоматизации? я вижу, что обычно не используются для этого, пожалуйста, проверьте сценарий запуска GCE документацию, чтобы убедиться, что вы используете правильный сценарий, например:

#! /bin/bash
printenv