У меня возникнут проблемы с пониманием среды оболочки, которая используется для запуска сценариев запуска. Какая разница с сеансом входа в систему?
Если я установлю простой сценарий запуска для печати переменных env:
метаданные
Предметы:
- ключ: сценарий запуска
значение: 'printenv;'
У меня будет что-то вроде этого:
20 февраля, 15:16:19 xxxx сценарий запуска [1112]: сценарий запуска INFO: OLDPWD = /
20 февраля 15:16:19 xxxx сценарий запуска [1112]: сценарий запуска INFO: ПУТЬ = / usr / local / sbin: / usr / local / bin: / usr /
20 февраля, 15:16:19 xxxx сценарий запуска [1112]: сценарий запуска INFO: PWD = / opt
20 февраля, 15:16:19 xxxx сценарий запуска [1112]: сценарий запуска INFO: LANG = en_US.UTF-8
20 февраля, 15:16:19 xxxx сценарий запуска [1112]: сценарий запуска INFO: SHLVL = 2
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