Unter Ubuntu 12.04 habe ich eine Umgebungsvariable wie folgt definiert /etc/environment
:
FOO="value_before#value_after"
Wenn ich auf den Server ssh, um den Wert zu überprüfen, erhalte ich Folgendes:
$ env | grep FOO
FOO=value_before
Ich vermute, es behandelt das #
als Kommentar und entfernt es, aber das funktioniert:
$ . /etc/environment
$ export FOO
$ env | grep FOO
FOO=value_before#value_after
Ich habe versucht, so zu entkommen #
:
FOO="value_before\#value_after"
Aber das funktioniert nicht, stattdessen verstehe ich nur Folgendes:
FOO=value_before\
Irgendwelche Ideen, wie man den Hash als Teil des Wertes behandelt? Jede Hilfe wäre großartig.
Werte, die ich in der /etc/environment
Datei ausprobiert habe :
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'
Und andere verschiedene Kombinationen der oben genannten. Viele davon funktionieren, wenn Sie sie normalerweise in der Shell einstellen. Aber sie scheinen in der /etc/environment
Datei nicht zu funktionieren .
quelle
Ich konnte nie einen Weg finden, um diese Einschränkung zu umgehen. In
/etc/environment
der Dokumentation scheint es sich/etc/environment
um eine einfache Umgebungsdatei zu handeln:Dies kann bedeuten, dass Sie den Werten nicht mit Anführungszeichen oder
\
Zeichen entkommen können , obwohl andere Stellen in der Dokumentation möglicherweise sagen, dass dies möglich ist :Oder vielleicht auch nicht :
Um diese Einschränkung zu umgehen, habe ich meine globalen Umgebungsvariablen
/etc/profile.d
wie in dieser Antwort beschrieben in eine Datei verschoben . Ich halte diese Frage immer noch für unbeantwortet, aber ich wollte sicherstellen, dass es eine verknüpfte Problemumgehung für die Nachwelt gibt.quelle
In / etc / environment gibt es keine Möglichkeit, sich dem # zu entziehen (da es als Kommentar behandelt wird), da es vom PAM-Modul "pam_env" analysiert wird, und es wird als einfache Liste von KEY = VAL-Paaren behandelt und eingerichtet Umwelt entsprechend. Es ist keine Bash / Shell, der Parser hat keine Sprache für die Erweiterung von Variablen oder das Entkommen von Zeichen.
quelle
Einzelzitate.
quelle
/etc/environment
. Ich habe meine Frage mit einigen Beispielen für Werte aktualisiert, die ich ausprobiert habe.