Saya mengalami masalah aneh. Saya memasukkan beberapa variabel env .bashrc
dan berfungsi sebagaimana mestinya:
echo $HADOOP_HOME
/home/me/dist/hadoop
Tetapi variabel env tidak dapat diakses saat menjalankan skrip bash. Misalkan saya membuat /tmp/sample.sh
dengan konten di bawah ini:
#! /bin/bash
echo $HADOOP_HOME
Ketika saya menjalankan skrip di atas, gema baris kosong:
/tmp/sample.sh
command-line
bash
scripts
environment-variables
Mehraban
sumber
sumber
.bashrc
? Dugaan saya adalah Anda tidakexport
ing :,export HADOOP_HOME=/home/me/dist/hadoop
ketika Anda menjalankan/tmp
sample.sh` (yang memunculkan yang barubash
dengan lingkungan baru) HADOOP_HOME tidak ada di lingkungan yang baru.Jawaban:
Itu karena
HADOOP_HOME
variabel tidak diekspor:Ketika Anda menjalankan skrip shell, skrip itu akan berjalan dalam instance bash sendiri (itulah yang
#!/bin/bash
dilakukannya) yang merupakan shell anak dari yang saat ini. Variabel tidak diteruskan ke shell anak secara default, hanya jika mereka diekspor. Pikirkan setiap sesi bash sebagai independen (sebagian besar adalah). Anda biasanya tidak ingin variabel yang didefinisikan dalam satu untuk mencemari lingkungan yang lain. Untuk kasus-kasus di mana itu perlu, gunakanexport
.sumber