Saya perhatikan di .bashrc
saya bahwa beberapa baris memiliki export
di depan mereka, seperti
export HISTTIMEFORMAT="%b-%d %H:%M "
...
export MYSQL_HISTFILE="/root/.mysql_history"
sedangkan yang lain tidak, seperti
HISTSIZE=100000
Saya bertanya-tanya apakah, pertama, ini benar, dan kedua apa aturan untuk menggunakan export
di .bashrc
.
Jawaban yang Diterima:
Anda hanya perlu export
untuk variabel yang seharusnya “dilihat” oleh program lain yang Anda luncurkan di shell, sedangkan variabel yang hanya digunakan di dalam shell itu sendiri tidak perlu export
ed.
Inilah yang dikatakan halaman manual:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Hal ini dapat ditunjukkan dengan berikut ini:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Penjelasan:
- Saya pertama kali mengatur
${MYVAR}
menjadi variabel Shell denganMYVAR="value"
. Menggunakanecho
Saya dapat menggemakan nilainya karena gema adalah bagian dari shell. - Lalu saya membuat
echo.sh
. Itu adalah skrip kecil yang pada dasarnya melakukan hal yang sama, hanya menggemakan${MYVAR}
, tetapi perbedaannya adalah ini akan berjalan dalam proses yang berbeda karena merupakan skrip yang terpisah. - Saat memanggil
echo.sh
itu tidak menghasilkan apa-apa, karena proses baru tidak mewarisi${MYVAR}
- Lalu saya mengekspor
${MYVAR}
ke lingkungan saya denganexport
kata kunci - Saat ini saya menjalankan
echo.sh
yang sama lagi, itu menggemakan konten${MYVAR}
karena didapat dari lingkungan
Jadi untuk menjawab pertanyaan Anda:
Tergantung di mana variabel akan digunakan, apakah Anda harus mengekspornya atau tidak.
Terkait:Bagaimana cara mengekspor log obrolan Google??
Pemecahan Masalah Dns. Domain Kampus Tidak Menyelesaikan Saat Menggunakan Jaringan Kampus?
Ssh – Pengaturan File Konfigurasi Ssh yang Benar Untuk Terowongan ke Mesin ke-3?