Di Ubuntu 12.04, saya memiliki variabel lingkungan yang didefinisikan /etc/environment
seperti ini:
FOO="value_before#value_after"
Ketika saya ssh ke server untuk memeriksa nilainya, saya mendapatkan ini:
$ env | grep FOO
FOO=value_before
Saya menduga itu memperlakukan #
sebagai komentar dan menghapusnya, namun, ini berfungsi:
$ . /etc/environment
$ export FOO
$ env | grep FOO
FOO=value_before#value_after
Saya sudah mencoba melarikan diri #
seperti ini:
FOO="value_before\#value_after"
Tapi itu tidak berhasil, sebagai gantinya saya hanya mendapatkan ini:
FOO=value_before\
Adakah ide tentang bagaimana membuat hash diperlakukan seperti bagian dari nilai? Bantuan apa pun akan bagus.
Nilai yang saya coba dalam /etc/environment
file:
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'
Dan berbagai kombinasi lainnya di atas. Banyak dari ini akan bekerja ketika Anda biasanya meletakkannya di shell. Tetapi mereka tampaknya tidak berfungsi dalam /etc/environment
file.
sumber
Saya tidak pernah dapat menemukan cara mengatasi keterbatasan ini
/etc/environment
, dokumentasi tampaknya menyatakan bahwa itu/etc/environment
adalah file lingkungan yang sederhana :Yang mungkin berarti itu tidak akan membiarkan Anda melarikan diri dari nilai menggunakan tanda kutip atau
\
karakter, meskipun tempat lain dalam dokumentasi mungkin mengatakan ini mungkin :Atau mungkin tidak :
Bagaimanapun, untuk mengatasi batasan ini, saya memindahkan variabel lingkungan global saya ke dalam file
/etc/profile.d
seperti yang dibahas dalam jawaban ini . Saya masih menganggap pertanyaan ini belum terjawab, tetapi saya ingin memastikan ada solusi terkait untuk anak cucu.sumber
Tidak ada cara di / etc / environment untuk keluar dari # (sebagaimana diperlakukan sebagai komentar) karena sedang diuraikan oleh modul PAM "pam_env" dan itu memperlakukannya sebagai daftar sederhana pasangan KEY = VAL dan mengatur lingkungan yang sesuai. Ini bukan bash / shell, parser tidak memiliki bahasa untuk melakukan ekspansi variabel atau karakter melarikan diri.
sumber
Kutipan tunggal.
sumber
/etc/environment
, saya memperbarui pertanyaan saya dengan beberapa contoh nilai yang saya coba.