Isso é lido pelo módulo pam_env. Dado que o módulo pam_env espera que eles sejam pares "simples" KEY = VALUE (não precisa de aspas) e também suporta comentários identificados por #, ele assume que um # e qualquer coisa após ele em um VALUE são um comentário. Além disso, observe que ele não suporta nenhum conceito de escape.
Isso pode ser visto no snippet a seguir da função _parse_env_file em pam_env.c .
/* now find the end of value */
mark = key;
while(mark[0] != '\n' && mark[0] != '#' && mark[0] != '/* now find the end of value */
mark = key;
while(mark[0] != '\n' && mark[0] != '#' && mark[0] != '%pre%')
mark++;
if (mark[0] != '%pre%')
mark[0] = '%pre%';
')
mark++;
if (mark[0] != '%pre%')
mark[0] = '%pre%';
O snippet acima percorre cada caractere da parte do VALUE até encontrar um \n
, #
ou
. Em seguida, ele substitui esse caractere por um #
/etc/environment
.
Isso remove efetivamente o #
e tudo o que se segue. Nota: Este é um recurso não de um erro. É o recurso de comentário.
Portanto, neste ponto, você não pode ter valores em \n
que incluam %code%
ou %code% ou %code% no meio do valor. Também parece do código que as chaves precisam ser alfanuméricas.