Мне нужно установить пароль для переменной среды, но проблема в том, что пароль включает в себя острый знак, и когда я хочу использовать эту переменную, просто покажите мне до первого резкого знака. например, предположим, что he#l#lo
- это мой пароль, и когда я устанавливаю его на /etc/environment
с помощью PASSWORD_API="he#l#lo"
, я печатаю его, просто показываю he
и оставляю символ после #
. но когда я использую export PASSWORD_API="he#l#lo"
из терминала, все нормально, в чем проблема, добавляя переменную окружения из \etc\environment
, я не могу изменить пароль, поэтому, если у вас есть идеи, пожалуйста, помогите мне. спасибо
Насколько я могу сказать, это - ограничение как pam_env
модуль читает строки файла среды (прежде чем, даже пытаясь проанализировать их в name=value
пары).
А именно, в _pam_assemble_line
функция (в libpam/pam_handlers.c
):
/*
* we are only interested in characters before the first '#'
* character
*/
while (*s && *s != '#')
++s;
Кажется, нет никакого условия для обработки заключенных в кавычки или завершенных строк никто по-другому.
Если необходимо установить переменную среды с такими символами, то необходимо будет сделать это в другом месте - например, создавая файл /etc/profile.d/password-api.sh
содержа строку
export PASSWORD_API="he#l#lo"
который должен быть получен значением по умолчанию /etc/profile
.
Конечно, поскольку я уверен, что Вы знаете, хранить пароли ГДЕ УГОДНО в простом тексте является плохой идеей - если Ваше приложение предоставляет другую возможность (такую как использование основанной на ключе аутентификации или добавление пароля надежно к агенту), необходимо использовать его.
Удалите пробелы вокруг знака "равно":
$ PASSWORD_API="he#l#lo"
$ echo $PASSWORD_API
he#l#lo