Sur Ubuntu 12.04, j'ai une variable d'environnement définie /etc/environment
comme ceci:
FOO="value_before#value_after"
Quand je ssh dans le serveur pour vérifier la valeur, j'obtiens ceci:
$ env | grep FOO
FOO=value_before
Je suppose qu'il traite le #
comme un commentaire et le supprime, cependant, cela fonctionne:
$ . /etc/environment
$ export FOO
$ env | grep FOO
FOO=value_before#value_after
J'ai essayé de m'échapper #
comme ceci:
FOO="value_before\#value_after"
Mais cela ne fonctionne pas, au lieu de cela, je reçois juste ceci:
FOO=value_before\
Avez-vous des idées sur la façon de traiter le hachage comme faisant partie de la valeur? Toute aide est la bienvenue.
Valeurs que j'ai essayées dans le /etc/environment
fichier:
FOO='value_before#value_after'
FOO="value_before#value_after"
FOO='"value_before#value_after"'
FOO="value_before\#value_after"
FOO='value_before\#value_after'
Et d'autres combinaisons diverses de ce qui précède. Beaucoup de ceux-ci fonctionneront lorsque vous les placerez normalement dans le shell. Mais ils ne semblent pas fonctionner dans le /etc/environment
fichier.
la source
Je n'ai jamais pu trouver un moyen de contourner cette limitation dans
/etc/environment
, la documentation semble indiquer qu'il/etc/environment
s'agit d'un simple fichier d'environnement:Ce qui pourrait signifier qu'il ne vous permettra pas d'échapper des valeurs en utilisant des guillemets ou le
\
caractère, malgré d'autres endroits dans la documentation disant peut-être que c'est possible :Ou peut-être pas :
Quoi qu'il en soit, pour contourner cette limitation, j'ai déplacé mes variables d'environnement global dans un fichier
/etc/profile.d
comme indiqué dans cette réponse . Je considère toujours cette question sans réponse, mais je voulais m'assurer qu'il y avait une solution de contournement liée pour la postérité.la source
Il n'y a aucun moyen dans / etc / environment d'échapper au # (tel qu'il est traité comme un commentaire) car il est analysé par le module PAM "pam_env" et il le traite comme une simple liste de paires KEY = VAL et configure le environnement en conséquence. Ce n'est pas bash / shell, l'analyseur n'a pas de langage pour faire l'expansion des variables ou l'échappement des caractères.
la source
Guillemets simples.
la source
/etc/environment
, j'ai mis à jour ma question avec quelques exemples de valeurs que j'ai essayées.