Відмітка хеш-позначки (#) у / etc / середовищі


17

Я додаю змінну env до, /etc/environmentале оскільки значення змінної містить знак #, рядок є смугастим.

MYSQL_PWD="something#no"

Тепер, якщо я зробимо envвище вихідні показники MYSQL_PWD=something. Як я можу уникнути хешу? Я вже спробував \характер.


Ви впевнені, що публікуєте саме те, що ви вкладаєте /etc/environment? Тому що я не міг дублювати цю поведінку на Debian Wheezy.
Джозеф Р.

На жаль, експорту немає. Оновлено моє запитання.
Umair A.

Поки що я змінив MySQL pwd :(
Umair A.

Мені вдалося дублювати вашу поведінку. Я не усвідомлював, що мені потрібно вийти, а потім повернутися, щоб прочитати свою оболонку /etc/environment.
Джозеф Р.

@JosephR. - Я це продублював і здивувався. Розглядаючи роль цього файлу, схоже, він відповідає його намірам.
slm

Відповіді:


18

Здається, це неможливо /etc/environment. Мається на увазі як загальне місце для змінних, незалежне від оболонки. З огляду на це, схоже, що він підтримує рядки з хеш-знаками ( #), і, схоже, немає способу уникнути їх.

Я знайшов це запитання SF під назвою: Як правильно уникнути провідного символу "#" у Linux тощо / середовищі? . Жоден із цих методів не працював:

  • контроль = "привіт"
  • test0 = "# привіт"
  • test1 = "h \ #ello"
  • test2 = "h # ello"
  • test3 = "h // # ello"
  • test4 = "h / # ello"
  • test5 = h # ello
  • test6 = h \ #ello
  • test7 = h # ello
  • test8 = h // # ello
  • test9 = h / # ello
  • test10 = 'h # ello'
  • test11 = 'h \ #ello'
  • test12 = 'h # ello'
  • test13 = 'h // # ello'
  • test14 = 'h / # ello'

Прийнята відповідь на це запитання, а також яка моя порада:

Ну, це хитрі речі, які ви хочете зробити /etc/environment- це не синтаксис оболонки, він схожий на один, але це не так, що засмучує людей. Ідея позаду /etc/environmentбула чудова. Незалежний від оболонки спосіб налаштування змінних! Так! Але практичні обмеження роблять це марним.

Ви не можете передавати там змінні. Спробуйте, наприклад, покласти MAIL=$HOME/Maildir/його і подивитися, що відбувається. Краще просто перестати намагатися використовувати його з будь-якою метою, на жаль. Таким чином, ви не можете робити з ним речі, які, як ви очікували, зможете зробити, якщо це буде оброблено оболонкою.

Використовуйте /etc/profileабо /etc/bashrc.

І все ж інше питання та відповіді дали це раціональне питання, чому це так:

Немає способу /etc/environmentуникнути # (як це трактується як коментар), оскільки він аналізується модулем PAM "pam_env", і він трактує його як простий список пар KEY = VAL і відповідно встановлює середовище. Це не bash / shell, аналізатор не має мови для змінного розширення або виходу символів.

Список літератури


це помилка чи є якась причина?
Умаїр А.

1
@UmairAshraf - не помилка, лише обмежена функціональність з огляду на роль цього файлу. Цей файл охоплює декілька технологій оболонки, тому він повинен поєднуватися з функціями, які підтримуються у всіх оболонках, в яких він буде використовуватися.
slm

як ідіотський; це просто повинно було використовувати той самий формат, що і /proc/environ.
Каз

1

Напевно, занадто пізно, але три відхилення перед цим #працювали на мене.

Якщо пароль, скажімо, "адміністратор № 123", ви можете визначити його як

admin\\\#123

Це не працювало для мене у /etc/environmentфайлі.
Joey V.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.