В Ubuntu 12.04 у меня есть переменная окружения, определенная /etc/environment
следующим образом:
FOO="value_before#value_after"
Когда я ssh на сервер, чтобы проверить значение, я получаю это:
$ env | grep FOO
FOO=value_before
Я предполагаю, что это обрабатывает #
как комментарий и удаляет его, однако, это работает:
$ . /etc/environment
$ export FOO
$ env | grep FOO
FOO=value_before#value_after
Я пытался избежать #
так:
FOO="value_before\#value_after"
Но это не работает, вместо этого я просто получаю это:
FOO=value_before\
Любые идеи о том, как сделать хеш-код частью стоимости? Любая помощь будет отличной.
Значения, которые я пробовал в /etc/environment
файле:
FOO='value_before#value_after'
FOO="value_before#value_after"
FOO='"value_before#value_after"'
FOO="value_before\#value_after"
FOO='value_before\#value_after'
И другие различные комбинации вышеперечисленного. Многие из них будут работать, когда вы просто устанавливаете их в оболочке. Но они, похоже, не работают в /etc/environment
файле.
источник
Мне никогда не удавалось найти способ обойти это ограничение
/etc/environment
, кажется, в документации говорится, что/etc/environment
это простой файл среды:Это может означать, что это не позволит вам экранировать значения, используя кавычки или
\
символ, несмотря на то, что в других местах документации может быть сказано, что это возможно :Или, может быть, нет :
В любом случае, чтобы обойти это ограничение, я переместил свои глобальные переменные среды в файл,
/etc/profile.d
как обсуждалось в этом ответе . Я до сих пор считаю этот вопрос без ответа, но я хотел убедиться, что есть связанный обходной путь для потомков.источник
В / etc / environment нет способа избежать # (поскольку он обрабатывается как комментарий), так как он анализируется модулем PAM "pam_env", и он обрабатывает его как простой список пар KEY = VAL и устанавливает среда соответственно. Это не bash / shell, синтаксический анализатор не имеет языка для расширения переменных или экранирования символов.
источник
Одиночные кавычки.
источник
/etc/environment
, я обновил свой вопрос несколькими примерами значений, которые я пробовал.