Как установить переменные окружения с косой чертой в ключе
Есть ли способ экспортировать переменную среды с косой чертой в имени, например:
export /myapp/db/username=someval
Этот пост указывает, что это должно быть возможно, но я не могу определить правильный синтаксис для этого.
Для фона:
Я использую confd для создания конфигурационных файлов из шаблона и хранилища ключей. Типичные магазины (консул и т. Д.) Используют иерархические ключи, такие как /myapp/db/username
, Я хотел бы прозрачно разрешить переключение между использованием поставщика на основе переменных среды и хранилищем конфигурации, которое использует иерархические ключи.
2 ответа
export
помечает только допустимые идентификаторы оболочки для экспорта в среду, а не любую строку, которая может сформировать действительную пару имя / значение в среде. Ты можешь использовать env
чтобы создать новый экземпляр оболочки с такой средой.
env "/myapp/db/username=someval" bash
Да, вы можете экспортировать такую переменную окружения, но не из bash export
заявление.
В то время как bash
откажется создать переменную среды с именем, например, a/b
, мы можем создать его с помощью Python, и подоболочки, созданные Python, увидят его.
В качестве примера рассмотрим следующую команду python:
$ python -c 'import os; os.environ["a/b"]="2"; os.system("/bin/bash");'
Если мы запустим эту команду, мы попадем в подоболочку. Из этой подоболочки мы видим, что создание переменной среды прошло успешно:
$ printenv | grep a/b
a/b=2
(В этот момент можно выйти из подоболочки (введите exit
или ctrl-D), чтобы вернуться в программу python, которая завершит работу и вернет нас в основную оболочку.)