У нас есть три основных языка, на которых мы выполняем системные задачи: Bash, Ruby, PHP и Perl. Четыре, четыре основных языка.
Мы используем управляемые переменные среды для предоставления информации об авторизации, необходимой автоматическим скриптам. Например, учетная запись пользователя и пароль mysql.
Мы хотели бы использовать один управляемый файл для поддержки этих переменных. В некоторых случаях, например, в cron, эти переменные среды недоступны. Они доступны в сценариях CLI, потому что мы получаем файл env в профиле каждого. Но что-то вроде cron этого не делает.
В интерфейсе командной строки при получении файла env любой сценарий может получить доступ к этим переменным. Bash имеет их напрямую, PHP - в $ _ENV, ruby - в ENV и т. Д.
Мы не можем передать файл в сценарии, отличные от Bash, потому что большинство языков реализуют команды оболочки, выполняя их в подоболочке.
Мы рассмотрели синтаксический анализ Bash, преобразование в язык сценария и выполнение эквивалента «exec (parsed_output)» для результирующих строк.
Что является хорошим решением для предоставления переменных управляемой среды сценариям, работающим в cron или аналогичных?
Мы не можем передать файл в скрипты, отличные от Bash
Нет - но если они уже находятся в среде, когда запускается среда выполнения, отличная от Bash, тогда у нее есть доступ к данным - в php, через $ _ENV, в perl через% ENV, в Ruby через ENV.
Поскольку сценарий запуска для большинства демонов (включая демоны apache, nginx и fastCGI, с которыми я встречался) обычно реализуется как сценарий оболочки, то там можно найти сценарий оболочки по умолчанию.