Как установить переменные окружения с косой чертой в ключе

Есть ли способ экспортировать переменную среды с косой чертой в имени, например:

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, которая завершит работу и вернет нас в основную оболочку.)

Другие вопросы по тегам