GNU/Linux >> Belajar Linux >  >> Linux

Perbedaan Antara Variabel Shell Yang Diekspor Dan Yang Tidak Di Bash?

Bash tampaknya membedakan antara variabel yang telah diekspor dan yang belum.

contoh:

$ FOO=BAR
$ env | grep FOO
$ set | grep FOO
FOO=BAR

set melihat variabel tetapi env tidak.

$ export BAR=FOO
$ env | grep FOO
BAR=FOO
$ set | grep FOO
BAR=FOO
FOO=BAR

set melihat kedua variabel tetapi env hanya melihat variabel yang diekspor.

Saya tahu bahwa set adalah bash bawaan dan env tidak.

Apa perbedaan antara variabel yang diekspor dan yang tidak?

Jawaban yang Diterima:

Variabel yang diekspor dibawa ke lingkungan perintah yang dijalankan oleh shell yang mengekspornya, sedangkan variabel yang tidak diekspor bersifat lokal untuk pemanggilan shell saat ini. Dari export halaman manual:

Shell akan memberikan atribut ekspor ke variabel yang sesuai dengan nama yang ditentukan, yang akan menyebabkannya berada di lingkungan perintah yang dieksekusi selanjutnya.

set menampilkan lingkungan saat ini, yang mencakup variabel lokal yang tidak diekspor. env digunakan untuk meluncurkan program di lingkungan baru, dan tanpa argumen akan menampilkan seperti apa lingkungan baru itu. Sejak env sedang menciptakan lingkungan baru, hanya variabel yang diekspor yang dibawa, seperti halnya program apa pun yang diluncurkan dari shell itu. Misalnya, memunculkan cangkang kedua di dalam cangkang pertama (saya menggunakan $$ untuk mewakili prompt di shell bagian dalam):

$ FOO=BAR
$ bash
$$ echo $FOO             # Note the empty line

$$ exit
$ export FOO
$ bash
$$ echo $FOO
BAR
$$

Perhatikan bahwa itu adalah variabel yang diekspor, bukan hanya nilainya. Ini berarti bahwa setelah Anda export FOO , FOO menjadi variabel global dan muncul di lingkungan berikutnya, bahkan jika diubah nanti:

$ export FOO
$ FOO=BAR
$ bash
$$ echo $FOO
BAR
$$

Linux
  1. Perbedaan Antara Perintah Bawaan Dan Yang Tidak?

  2. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  3. Linux – Apa Perbedaan Antara `su -` Dan `su –login`?

  1. Perbedaan Antara Shell Login dan Shell Non-login?

  2. Perbedaan Antara ' Dan ” Di Command Line (bash)??

  3. Perbedaan Penggunaan Antara Variabel Shell Dan Variabel Lingkungan?

  1. Manakah Parameter/variabel Khusus Shell (bash)?

  2. bash:atur variabel array env dan de-referensi dari skrip shell gagal

  3. Apa perbedaan antara nohup dan ampersand