Seseorang mengatakan kepada saya bahwa:
BASH bukan variabel lingkungan, ini adalah variabel shell
Apa bedanya?
bash
command-line
environment-variables
Tom Brito
sumber
sumber
Jawaban:
$BASH
adalah variabel lokal yang hanya valid dalam shell (bash) saat ini.Variabel lingkungan seperti
$SHELL
yang berlaku di seluruh sistem. Di shell Bash saat ini,$BASH
menunjuk ke jalur eksekusi bash , sedangkan$SHELL
menunjuk ke shell didefinisikan sebagai default (yang mungkin memiliki nilai yang sama).Untuk penjelasan tentang variabel lingkungan, lihat Variabel Lingkungan di Bantuan Ubuntu.
sumber
Variabel lingkungan tersedia secara global, dalam sebuah program dan itu adalah program anak. Variabel shell hanya tersedia di shell saat ini. Untuk membuat variabel shell tersedia sebagai variabel lingkungan, gunakan
export VARNAME
(tanpa dolar$
).Contoh untuk klarifikasi:
Cara lain untuk mendefinisikan variabel lingkungan:
sumber
export
tidak perlu menetapkan variabel lingkungan. stackoverflow.com/questions/7411455/…export
tidak menetapkan variabel lingkungan untuk proses anak. Posting yang Anda tautkan tidak bertentangan dengan jawaban ini, dapatkah Anda menjelaskan mengapa Anda berpikir itu salah?export
benar-benar menetapkan variabel lingkunganAda perbedaan. Variabel Shell dan Variabel Lingkungan akan menjelaskan dengan lebih baik yang saya bisa, tetapi berikut adalah kutipan darinya:
sumber
Variabel Shell: Jangka Pendek, Diterapkan hanya untuk instance shell saat ini, Tidak berlaku untuk seluruh sistem
Variabel Lingkungan: Penggunaan Jangka Panjang, Sistem Valid Lebar, Diizinkan Secara Global
Dengan konvensi Shell Variable memiliki nama mereka sebagai huruf kecil sementara Envn. Variabel ditulis sebagai huruf besar
sumber
Untuk menjawab pertanyaan ini pertama-tama cobalah untuk memahami ruang lingkup variabel.
Ketika Anda membuat variabel baru seperti
SOME_ENV_VARIABLE="testing.txt"
itu berada diSHELL scope
, itu berarti itu dapat diakses oleh contoh shell di mana pengguna login. Ketika instance berubah misalnya Anda membuka terminal baru atau Anda mengganti shell (misalnya Anda beralih kecsh
) Anda tidak dapat mengakses variabel itu.Ketika Anda mengekspor variabel seperti
export SOME_ENV_VARIABLE
variabel itu sekarang tersedia dalam lingkup lingkungan, itu berarti dalam hal itu jika Anda mengganti shell Anda masih dapat mengakses variabel itu. Mari kita coba mengerti dengan contoh berikut:Analogi: mari kita asumsikan Anda memiliki apartemen dua kamar tidur dan Anda membaginya dengan teman sekamar lain. Area umum dapat diakses oleh siapa saja tetapi tidak di kamar tidur Anda, variabel lingkungan seperti area umum dan variabel shell seperti kamar tidur, jika Anda ingin sesuatu di area umum dapat diakses oleh siapa saja tetapi jika Anda menyimpannya di kamar tidur Anda hanya dapat dapat diakses oleh Anda.
Ingat jika membuka terminal baru Anda tidak akan dapat mengakses salah satu variabel karena Anda mengubah contoh itu . Untuk itu Anda harus menambahkan variabel Anda di salah satu
.profile
atau.bashrc
(jika Anda menggunakan bash).sumber