Переменные среды из .bashrc не загружаются при использовании из скрипта terraform

У меня есть сценарий, запускаемый с terraform на экземпляре EC2, например:

provisioner "remote-exec" {
  inline = [
    "bash /path/to/myscript.sh
  ]
}

У меня есть некоторые переменные среды, определенные в .bashrc этого экземпляра, к которым я хотел бы, чтобы этот скрипт имел доступ. Однако внутри этого скрипта я добавил

source ~/.bashrc

как первая строка, но переменные, определенные в .bashrc, все еще не установлены.

Что мне нужно сделать для успешного исходника .bashrc?


person Davis Yoshida    schedule 06.10.2016    source источник
comment
В вашем .bashrc есть что-то вроде [ -z "$PS1" ] && return # If not running interactively, don't do anything   -  person anishsane    schedule 06.10.2016
comment
Нечто подобное действительно было. Спасибо! Если вы хотите использовать это как ответ, я приму это.   -  person Davis Yoshida    schedule 06.10.2016


Ответы (1)


Часто ~/.bashrc проверяет, применяются ли настройки только в интерактивной среде. По крайней мере, эта проверка присутствует в Ubuntu по умолчанию.

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

Внутри сценария у вас не будет установлено PS1.

Итак, либо удалите / прокомментируйте эту строку из своего ~/.bashrc;

или создайте сценарий следующим образом:

PS1=non-empty source ~/.bashrc
person anishsane    schedule 06.10.2016