Это кажется невозможным с /etc/environment
. Это общее место для переменных, которые не зависят от оболочки. Учитывая это, он не выглядит так, как будто он поддерживает строки с хэш-метками ( #
), и, похоже, нет способа избежать их.
Я нашел этот SF Q & A под названием: Как правильно избежать лидирующего символа «#» в linux и т.д. / среде? , Ни один из этих методов не сработал:
- Контроль = «Привет»
- test0 = "# привет"
- test1 = "ч \ #ello"
- test2 = "ч # ELLO"
- test3 = "ч // # ELLO"
- test4 = "ч / # ELLO"
- test5 = ч # ELLO
- test6 = ч \ #ello
- test7 = ч # ELLO
- test8 = Л // # ELLO
- test9 = ч / # ELLO
- test10 = 'ч # ELLO'
- test11 = 'ч \ #ello'
- test12 = 'ч # ELLO'
- test13 = 'ч // # ELLO'
- test14 = 'ч / # ELLO'
Принятый ответ на этот вопрос и что также будет моим советом:
Ну, это сложная вещь, которую вы хотите сделать, /etc/environment
это не синтаксис оболочки, это похоже на один, но это не так, что расстраивает людей. Идея /etc/environment
была замечательной. Независимый от оболочки способ установки переменных! Ура! Но практические ограничения делают его бесполезным.
Вы не можете передавать переменные там. Попробуйте например положить MAIL=$HOME/Maildir/
в него и посмотреть что получится. Лучше просто прекратить попытки использовать его для каких-либо целей, увы. Таким образом, вы не можете делать с ним такие вещи, которые вы могли бы ожидать, если бы они были обработаны оболочкой.
Используйте /etc/profile
или /etc/bashrc
.
Еще один вопрос и ответ дал разумное объяснение, почему это так:
Нет способа /etc/environment
избежать # (так как он рассматривается как комментарий), так как он анализируется модулем PAM "pam_env", и он обрабатывает его как простой список пар KEY = VAL и соответствующим образом настраивает среду. Это не bash / shell, синтаксический анализатор не имеет языка для расширения переменных или экранирования символов.
Ссылки
/etc/environment
? Потому что я не мог продублировать это поведение на Debian Wheezy.