Saya menjalankan Red Hat Linux Enterprise 5; Saya selalu menggunakan perintah ekspor untuk mengatur variabel lingkungan.
Apakah ada cara lain untuk mengatur variabel lingkungan dan apa keuntungan / kerugiannya?
Saya menjalankan Red Hat Linux Enterprise 5; Saya selalu menggunakan perintah ekspor untuk mengatur variabel lingkungan.
Apakah ada cara lain untuk mengatur variabel lingkungan dan apa keuntungan / kerugiannya?
Ini adalah kutipan dari halaman manual Bash:
ekspor [-fn] [nama [= kata]] ...
ekspor -p
Nama yang diberikan ditandai untuk ekspor otomatis ke lingkungan perintah yang dieksekusi selanjutnya. Jika opsi -f diberikan, nama merujuk ke fungsi ...
Jika Anda hanya perlu variabel di lingkungan saat ini, tidak perlu menggunakan ekspor.
var=value
Edit:
Tanpa ekspor: hanya lingkungan saat ini. Dengan ekspor: lingkungan saat ini dan lingkungan anak.
Berikut ini demonstrasi pengaruh ekspor terhadap ketersediaan variabel dalam lingkungan anak dan bahwa perubahan dalam lingkungan anak tidak memengaruhi induk:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Setelah gema pertama ( echo "parent..."
) Anda melihat "123" dan "456" karena keduanya var1
dan var2
aktif di lingkungan saat ini. Anda tidak melihat nilai var3
karena belum ditetapkan.
Setelah baris yang dimulai " var3=...
" Anda tidak melihat nilainya var1
karena tidak diekspor. Anda melakukan melihat nilai untuk var2
karena itu diekspor. Anda melihat nilai var3
karena itu ditetapkan untuk lingkungan anak -satunya .
( bash -c
setara dengan menjalankan skrip dengan isi argumen ke -c
opsi. Sebuah skrip atau yang dapat dieksekusi lainnya, atau dalam hal ini, argumen untuk bash -c
menjadi anak dari lingkungan saat ini yang, sebagai akibatnya, tentu saja, anak induk.)
Dalam "skrip" nilai-nilai variabel diubah. Sekarang output nilai-nilai baru itu.
Setelah "skrip" selesai, eksekusi kembali ke lingkungan induk (baris perintah dalam kasus ini). Setelah gema terakhir, Anda melihat nilai-nilai asli karena perubahan yang dibuat di lingkungan anak tidak mempengaruhi orangtua.
export
- untuk membuat variabel tersedia untuk lingkungan anak ini.Itu kata kamu
Dengan cara Anda mengatakan itu, sepertinya Anda benar-benar mencoba untuk bertanya bagaimana Anda membuat variabel lingkungan tetap ada. Untuk melakukan itu akan mengharuskan Anda untuk menempatkan
export VAR="foo"
pernyataan Anda dalam file $ HOME / .bash_profile Anda (jika Anda menggunakan bash). Jika Anda ingin agar variabel lingkungan tetap ada untuk semua pengguna selain root, tambahkan ke / etc / profile. Jika Anda ingin menambahkannya untuk pengguna root juga, maka atur di /root/.bash_profile.Ini akan bekerja untuk semua shell login di mana bash adalah shell pilihan. Untuk shell yang tidak masuk, Anda harus menggunakan .bashrc. Saya tidak memiliki wawasan untuk menawarkan untuk kerang lain: D
sumber
ekspor adalah cara paling mudah untuk melakukannya, jadi mengapa tidak membiarkannya begitu saja?
sumber
FOO=BAR; executethisprogram
Programexecutethisprogram
TIDAK AKAN tahu nilai variabelFOO
. Di sisi lain, ketika menggunakan:FOO=BAR; export FOO; executethisprogram
Programexecutethisprogram
AKAN tahu nilai variabelFOO
.export FOO
adalah perintah yang menandai variabelFOO
sehingga dapat diakses oleh proses anak dari lingkungan di mana perintah itu dikeluarkan. Orang tua itu bisa berupa skrip atau shell interaktif.Anda juga dapat melakukan sesuatu seperti ini:
Sebagai contoh:
output dalam bahasa Inggris.
output dalam bahasa Polandia (jika tersedia).
Di masa lalu di sh Anda tidak dapat melakukan ekspor VAL = val. Anda harus
sumber
ls
, misalnya) tanpa mempengaruhi nilai variabel itu di lingkungan (orang tua) saat ini.ls
adalah anak dari proses dari mana ia dijalankan. Jika saya mengetikls
pada prompt perintah, shell interaktif adalah orang tua danls
adalah anak. Jika saya memiliki skrip yang digunakanls
maka skrip adalah orang tua danls
anak.