Bagaimana cara mengekspor variabel secara permanen di Linux?

155

Saya menjalankan RHEL6, dan saya telah mengekspor variabel lingkungan seperti ini:

export DISPLAY=:0

Variabel itu hilang ketika terminal ditutup. Bagaimana cara menambahkan ini secara permanen sehingga nilai variabel ini selalu ada dengan pengguna tertentu?

pengguna1340582
sumber

Jawaban:

171

Anda dapat menambahkannya ke file konfigurasi shell Anda, mis. $HOME/.bashrcAtau lebih secara global di /etc/environment. Setelah menambahkan baris-baris ini, perubahan tidak akan langsung tercermin dalam sistem berbasis GUI, Anda harus keluar dari terminal atau membuat yang baru dan di server logout sesi dan login untuk mencerminkan perubahan ini.

Antoine
sumber
3
Terima kasih, itu sangat membantu. Bagaimana saya bisa membuat perubahan berlaku tanpa memulai ulang? (Saya pemula Linux)
Bitterblue
5
@ mini-me - ~ / bashrc ditarik setiap kali Anda membuka shell. Untuk memuatnya secara eksplisit, gunakan sourcemisalnya - > source ~/.bashrc.
kostja
@kostja Untuk semua kerang baru ? Jika saya memiliki gerhana berjalan sebelum saya mengubah variabel-variabel env dan saya ingin gerhana telah mengubah vars, apakah saya harus memulai ulang gerhana?
Bitterblue
1
@ mini-me: lingkungan suatu proses biasanya diatur oleh pemanggil dan diubah dari dalam proses. Mengubah env dari luar proses yang berjalan tidak biasa dan tidak dapat dilakukan dengan export, tetapi coba dengan debugger
Antoine
1
@ Mr.Hyde: Biasanya tidak masalah. File diuraikan dari atas ke bawah, jadi jika definisi var tergantung pada yang lain, mereka harus dipesan sesuai. Jadi ya akhir file baik-baik saja.
Antoine
120

Anda harus mengedit tiga file untuk menetapkan variabel lingkungan permanen sebagai berikut:

  • ~ / .bashrc

    Ketika Anda membuka jendela terminal apa pun, file ini akan dijalankan. Karena itu, jika Anda ingin memiliki variabel lingkungan permanen di semua jendela terminal Anda, Anda harus menambahkan baris berikut di akhir file ini:
    export DISPLAY = 0

  • ~ /. profil

  • Sama seperti bashrc Anda harus meletakkan baris perintah yang disebutkan di akhir file ini untuk memiliki variabel lingkungan Anda di setiap login OS Anda.

  • / etc / environment

  • Jika Anda ingin variabel lingkungan Anda di setiap jendela atau aplikasi (bukan hanya jendela terminal) Anda harus mengedit file ini. Tambahkan perintah berikut di akhir file ini:
    DISPLAY = 0
    Perhatikan bahwa dalam file ini Anda tidak harus menulis perintah ekspor

Biasanya Anda harus me-restart komputer Anda untuk menerapkan perubahan ini. Tetapi Anda dapat menerapkan perubahan dalam bashrc dan profil dengan perintah ini:

$ source ~/.bashrc
$ source ~/.profile

Tetapi untuk / etc / environment Anda tidak punya pilihan selain memulai kembali (sejauh yang saya tahu)

  • Solusi Sederhana

  • Saya telah menulis skrip sederhana untuk prosedur ini untuk melakukan semua pekerjaan itu. Anda hanya perlu menetapkan nama dan nilai variabel lingkungan Anda.

    #!/bin/bash
    echo "Enter variable name: "
    read variable_name
    echo "Enter variable value: "
    read variable_value
    echo "adding " $variable_name " to environment variables: " $variable_value
    echo "export "$variable_name"="$variable_value>>~/.bashrc
    echo $variable_name"="$variable_value>>~/.profile
    echo $variable_name"="$variable_value>>/etc/environment
    source ~/.bashrc
    source ~/.profile
    echo "do you want to restart your computer to apply changes in /etc/environment file? yes(y)no(n)"
    read restart
    case $restart in
        y) sudo shutdown -r 0;;
        n) echo "don't forget to restart your computer manually";;
    esac
    exit
    

    Simpan baris ini di shfile kemudian buatnya bisa dieksekusi dan jalankan saja!

    e_soroush
    sumber
    1
    Script bekerja dengan sangat baik. Saya sudah menginstal Ubuntu 14.04. Saya baru saja menempel konten di atas dalam file kosong, menamainya insert_var.sh , lalu chmod -x insert_var.sh, lalu bash insert_var.sh. Terima kasih.
    Brunno Vodola Martins
    Saya membuka Terminal Window di Ubuntu dan masukkan ekspor MY_VAR = 1. Di mana Variabel MY_VAR ini disimpan?
    vgokul129
    29

    tambahkan baris ke .bashrcatau .profile. Variabel yang ditetapkan $HOME/.profileaktif untuk pengguna saat ini, variabel di dalamnya /etc/profilebersifat global. Ini .bashrcditarik pada setiap awal sesi bash.

    kostja
    sumber
    27

    Pada sistem Ubuntu, gunakan lokasi berikut:

    1. Variabel persisten seluruh sistem dalam format JAVA_PATH=/usr/local/javastore in

      /etc/environment
      
    2. Variabel persisten seluruh sistem yang merujuk variabel seperti
      export PATH="$JAVA_PATH:$PATH"menyimpan di

      /etc/.bashrc
      
    3. Variabel persisten khusus pengguna dalam format PATH DEFAULT=/usr/bin:usr/local/binstore in

      ~/.pam_environment
      

    Untuk detail lebih lanjut tentang # 2, periksa ini Tanya jawaban Ubuntu . CATATAN: # 3 adalah rekomendasi Ubuntu tetapi mungkin memiliki masalah keamanan di dunia nyata.

    csi
    sumber
    2

    Contoh khusus: Saya telah menginstal Java 7 dan Java 6, saya perlu menjalankan beberapa build dengan 6, yang lain dengan 7. Oleh karena itu saya perlu mengubah secara dinamis JAVA_HOMEsehingga pakar mengambil apa yang saya inginkan untuk setiap build. Saya melakukan yang berikut:

    • j6.shskrip dibuat yang hanya melakukan ekspor JAVA_HOME=...jalur ke j6 menginstal ...
    • kemudian, seperti yang disarankan oleh salah satu komentar di atas, setiap kali saya membutuhkan J6 untuk membangun, saya menjalankan sumber j6.shdi terminal perintah masing-masing. Secara default, saya JAVA_HOMEdiatur ke J7.

    Semoga ini membantu.

    Cristian Botiza
    sumber