Назад | Перейти на главную страницу

Как правильно экранировать начальный символ «#» в linux etc / environment?

Я хотел бы сохранить общесистемную переменную среды в etc/environment в AWS Linux AMI 2013.03. В этом примере я пытаюсь сохранить фразу «# hello». См. Примеры ниже. echo $control производит

hello

Я ожидал echo $test0 (ниже) для производства:

#hello

но вместо этого выводится пустая строка. Ниже приводится список тестов, в которые я ввел /etc/environment:

Если я выйду из системы, а затем снова войду в систему, он правильно проанализирует / etc / environment. Условие управления переходит echo $control. Однако ни один из тестовых примеров не отвечает правильно. В каждом случае строка после решетки (#) либо перехватывается, либо игнорируется. Например, echo $test5 производит h. Есть ли лучший способ уйти от #?

Интересно, если я выполню source /etc/environment тогда все работает, как ожидалось, и на самом деле оба echo $control и echo $test дают желаемый результат. Но после выхода из системы / входа в систему проблема возвращается ...

Что ж, это непростая вещь, которую вы хотите сделать / etc / environment - это не синтаксис оболочки, он выглядит так, но это не так, что разочаровывает людей. Идея / etc / environment была замечательной. Независимый от оболочки способ установки переменных! Ура! Но практические ограничения делают его бесполезным.

Вы не можете передавать туда переменные. Попробуйте, например, поместить в него MAIL = $ HOME / Maildir / и посмотреть, что произойдет. Увы, лучше просто перестать пытаться использовать его для каких-либо целей. Таким образом, вы не можете делать с ним то, что ожидали бы, если бы он был обработан оболочкой.

Используйте / etc / profile или / etc / bashrc.