export VARIABLE_NAME='some value'
adalah cara untuk mengatur variabel lingkungan dalam shell POSIX-compliant ( sh
, dash
, bash
, ksh
, dll .; juga zsh). Jika variabel sudah memiliki nilai, Anda dapat menggunakannya export VARIABLE_NAME
untuk menjadikannya variabel lingkungan tanpa mengubah nilainya.
Pra-POSIX Shell Bourne tidak mendukung ini, itulah sebabnya Anda akan melihat skrip yang menghindari export VARIABLE_NAME='some value'
dan menggunakannya VARIABLE_NAME='some value'; export VARIABLE_NAME
. Tapi cangkang Bourne pra-POSIX sangat langka saat ini.
setenv VARIABLE_NAME='some value'
adalah sintaks csh untuk mengatur variabel lingkungan. setenv
tidak ada di sh, dan csh sangat jarang digunakan dalam skrip dan telah dilampaui oleh bash untuk penggunaan interaktif selama 20 tahun terakhir (dan zsh bahkan lebih lama), sehingga Anda dapat melupakannya kecuali Anda menjumpainya.
The env
perintah sangat jarang berguna kecuali dalam garis peristiwa . Ketika dipanggil tanpa argumen, ini menampilkan lingkungan, tetapi export
apakah itu lebih baik (diurutkan, dan sering dikutip untuk mengaburkan baris baru dalam nilai dari baris baru yang memisahkan nilai). Ketika dipanggil dengan argumen, itu menjalankan perintah dengan variabel lingkungan tambahan, tetapi perintah yang sama tanpa env
juga berfungsi ( VAR=value mycommand
berjalan mycommand
dengan VAR
set ke value
, sama seperti env VAR=value mycommand
). Alasannya env
berguna dalam baris shebang adalah bahwa ia melakukan PATH
pencarian, dan kebetulan tidak melakukan hal lain ketika dipanggil dengan nama perintah. The env
perintah dapat berguna untuk menjalankan perintah dengan hanya beberapa variabel lingkungan dengan-i
, atau tanpa parameter untuk menampilkan lingkungan termasuk variabel dengan nama tidak valid yang shell tidak impor.
Gilles 'SO- berhenti menjadi jahat'
sumber
VAR=asdf
perbarui lingkungan jikaVAR
sudah ada di lingkungan. (Ini tidak benar dalam kulit Bourne asli.)Ada beberapa pertanyaan dengan jawaban yang menjawab ini:
Mencoba memahami .bashrc, env, dan ekspor
Perbedaan antara variabel shell yang diekspor dan yang tidak dalam bash
Apa perbedaan penggunaan antara variabel shell dan variabel lingkungan?
Perintah bash setenv tidak ditemukan
Apa perbedaan antara "ekspor" dan "setenv"?
(dll.)
sumber