Apa perbedaan antara set
, env
, declare
dan export
ketika menetapkan variabel dalam shell Linux, seperti bash
?
linux
bash
shell
shell-script
pengguna3872279
sumber
sumber
Jawaban:
Tampaknya set dan menyatakan sedikit berbeda, dengan set menjadi lebih kuat.
Lihat "menyatakan" di bawah https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins menyatakan: "Nyatakan variabel dan berikan mereka atribut. Jika tidak ada nama yang diberikan, maka tampilkan nilai-nilai variabel sebagai gantinya.
Set "set" di bawah https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: "bawaan ini sangat rumit sehingga layak mendapatkan bagiannya sendiri. Set memungkinkan Anda untuk ubah nilai opsi shell dan atur parameter posisi, atau untuk menampilkan nama dan nilai variabel shell. "
ENV adalah variabel lingkungan di Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env adalah perintah Linux. Saya pikir ini adalah referensi yang bagus: /unix/103467/what-is-env-command-doing
Saya pikir ini adalah penjelasan ekspor yang bagus: http://www.unix.com/302531838-post2.html
Juga: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * ekspor (dari Bourne): "Tandai setiap nama untuk diteruskan ke proses anak di lingkungan."
Kode pinjaman dari URL di atas:
sumber
declare
danset
danenv
? ekspor vs menyatakan?Pertama, Anda harus memahami itu
environment variables
danshell variables
bukan hal yang sama.Kemudian, Anda harus tahu bahwa kerang memiliki atribut yang mengatur cara kerjanya. Atribut ini bukan variabel lingkungan atau shell.
Sekarang, lanjutkan untuk menjawab pertanyaan Anda.
env
: tanpa opsi apa pun, menunjukkan variabel lingkungan saat ini dengan nilainya; Namun dapat digunakan untuk mengatur variabel lingkungan untuk satu perintah dengan-i
flagset
: tanpa opsi, nama dan nilai setiap variabel shell ditampilkan * ~ dari menjalankanman set
di rhel; juga dapat digunakan untuk mengatur atribut shell . Perintah ini TIDAK mengatur lingkungan atau variabel shell .declare
: tanpa opsi apa pun, sama sepertienv
; juga dapat digunakan untuk mengatur variabel shellexport
: membuat variabel lingkungan variabel shellPendeknya:
set
tidak mengatur variabel shell atau lingkunganenv
dapat mengatur variabel lingkungan untuk satu perintahdeclare
set variabel shellexport
membuat variabel lingkungan variabel shellCATATAN
declare -x VAR=VAL
membuat variabel shell dan juga mengekspornya, menjadikannya variabel lingkungan.sumber