W systemie Ubuntu 12.04 mam zmienną środowiskową zdefiniowaną w /etc/environment
następujący sposób:
FOO="value_before#value_after"
Kiedy ssh do serwera, aby sprawdzić wartość, otrzymuję to:
$ env | grep FOO
FOO=value_before
Zgaduję, że traktuje to #
jako komentarz i usuwa go, jednak działa to:
$ . /etc/environment
$ export FOO
$ env | grep FOO
FOO=value_before#value_after
Próbowałem uciec w #
ten sposób:
FOO="value_before\#value_after"
Ale to nie działa, zamiast tego otrzymuję to:
FOO=value_before\
Jakieś pomysły na to, jak sprawić, by skrót był traktowany jako część wartości? Każda pomoc byłaby świetna.
Wartości, które próbowałem w /etc/environment
pliku:
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'
I inne różne kombinacje powyższych. Wiele z nich będzie działać, gdy zwyczajnie ustawisz je w powłoce. Ale wydaje się, że nie działają w /etc/environment
pliku.
źródło
Nigdy nie byłem w stanie znaleźć sposobu na obejście tego ograniczenia
/etc/environment
, dokumentacja wydaje się stwierdzać, że/etc/environment
jest to prosty plik środowiska:Co może oznaczać, że nie pozwoli ci uciec od wartości za pomocą cudzysłowów lub
\
znaku, pomimo innych miejsc w dokumentacji, które mogą powiedzieć, że jest to możliwe :A może nie :
W każdym razie, aby obejść to ograniczenie, przeniosłem moje globalne zmienne środowiskowe do pliku w
/etc/profile.d
sposób omówiony w tej odpowiedzi . Nadal uważam, że na to pytanie nie ma odpowiedzi, ale chciałem się upewnić, że istnieje powiązane obejście dla potomności.źródło
W / etc / environment nie ma sposobu na uniknięcie znaku # (traktowanego jako komentarz), ponieważ jest on analizowany przez moduł PAM „pam_env” i traktuje go jako prostą listę par KEY = VAL i konfiguruje środowisko odpowiednio. To nie jest bash / shell, parser nie ma języka do interpretacji zmiennych lub ucieczki znaków.
źródło
Pojedyncze cytaty.
źródło
/etc/environment
, zaktualizowałem swoje pytanie o kilka przykładów wartości, które wypróbowałem.