Bagaimana cara menetapkan variabel lingkungan persisten untuk root?


40

Untuk membuat variabel lingkungan persisten, saya menambahkan file skrip ke direktori /etc/profile.d, misalnya:

# skrip saya
ekspor MY_VAR = var_value

Ini berfungsi dengan baik untuk pengguna saat ini:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value

Sekarang saya membutuhkan variabel lingkungan yang sama untuk pengguna root, tetapi script /etc/profile.d tidak berfungsi untuk root:

alex @ alex-64: ~ $ echo $ MY_VAR
var_value
alex @ alex-64: ~ $ sudo su
root @ alex-64: / home / alex # echo $ MY_VAR

root @ alex-64: / home / alex # 

Bagaimana saya bisa mengatur variabel yang sama untuk root?


2
Pertanyaan ini tentang bagaimana cara melestarikan variabel tertentu dari lingkungan pemanggil saat menjalankan sudosangat terkait. (Tetapi ini bukan duplikat karena pertanyaan ini adalah tentang bagaimana menyesuaikan lingkungan root sendiri .)
— Eliah Kagan

Jawaban:


44

sudo biasanya tidak melestarikan variabel lingkungan lokal. Anda harus menggunakannya dengan -Eswitch untuk melakukannya, yaitu sudo -E suakan menghemat $ MYVAR untuk root.

Atau, untuk membuat variabel persisten yang benar-benar luas sistem, Anda harus mengaturnya /etc/environment.


14
Tidak berfungsi, / etc / variabel lingkungan tidak diset untuk sudo
— Frederic Yesid Peña Sánchez

3
@ FredericYesidPeñaSánchez lakukan untuk saya di CentOS. Anda tidak skrip di sana, Anda hanya melakukan tugas sederhana pada setiap baris, yaituFOO=bar
— iamyojimbo

10

Seperti proses yang Anda tetapkan variabel lingkungan Anda sendiri, misalnya dengan mengedit '~ / .bashrc', Anda dapat mendefinisikan variabel lingkungan root dengan mengedit '/root/.bashrc'.


8

Defaults env_resetdi /etc/sudoersakan mengatur ulang root yang PATHditentukan oleh /etc/environment.

Anda dapat memodifikasinya Defaults !env_resetuntuk menonaktifkan pengaturan ulang atau menambahkan:

Defaults secure_path="my/custom/path:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

Jika saya ingin menggunakan solusi kedua (artinya tambahkan path ke secure_path), apa kuncinya ?! jalan hanya nilai. Saya ingin menambahkan ANDROID_NDK ke variabel lingkungan untuk root. Jadi untuk sekarang, saya hanya menggunakan yang pertama (! Env_reset). Terima kasih.
— Dr.jacky
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.