I'm menjalankan Ubuntu 11.04. Saya menggunakan terminal untuk memulai bash sesi, dan saya ingin menambahkan variabel lingkungan:
$r@hajt:~$ env THEVAR=/example
Tapi itu's tidak bekerja. Ini menunjukkan semua variabel dengan baling-baling angin menjadi yang terakhir, tapi panggilan lain untuk amplop
tidak menunjukkan baling-baling angin
lagi- env | grep baling-baling angin
mengembalikan apa-apa.
Demikian pula, dengan skrip ekspor (ekspor baling-baling angin=/contoh) atau tugas-tugas variabel lain (
baling-baling angin=/contoh`) don't menambahkan variabel lingkungan.
Aku tahu aku'm melakukan sesuatu yang salah, aku tahu itu harus menjadi sesuatu yang sederhana, tapi aku hanya bisa't menemukan apa yang.
UPDATE: Arti sebenarnya dari pertanyaan saya adalah yang satu ini: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Pokoknya saya'll memilih yang paling sebagai jawaban dan meninggalkan diedit judul -itu't apa yang saya minta)
amplop
menjalankan program di modifikasi lingkungan, kemudian menolak semua perubahan.
Untuk mengatur variabel hanya untuk saat ini shell:
VARNAME="my value"
Untuk mengatur hal itu untuk saat ini shell dan semua proses mulai dari saat ini shell:
export VARNAME="my value" # shorter, less portable version
Untuk mengaturnya permanen untuk semua masa depan bash sesi tambahkan baris tersebut untuk anda .bashrc
file $
HOME directory.
Untuk mengatur ini secara permanen, dan sistem yang luas (semua pengguna, semua proses) menambahkan set variabel di /etc/environment:
sudo -H gedit /etc/environment
File ini hanya menerima tugas-tugas variabel seperti:
VARNAME="my value"
Jangan menggunakan ekspor
kata kunci di sini.
Anda perlu logout dari pengguna saat ini dan login lagi sehingga variabel lingkungan perubahan terjadi.
Untuk mengatur variabel lingkungan sekali, gunakan ekspor
perintah di prompt, tidak di shell script:
$ export THEVAR=/example
Variabel yang akan ditetapkan untuk sisa sesi shell atau sampai unset.
Untuk mengatur variabel lingkungan setiap kali, gunakan ekspor
perintah .bashrc
file (atau sesuai inisialisasi file untuk anda shell).
Untuk mengatur variabel lingkungan script, gunakan ekspor
perintah dalam naskah, dan kemudian sumber
script. Jika anda menjalankan script ini tidak akan bekerja.
Untuk penjelasan perbedaan antara sumber dan melaksanakan melihat jawaban ini: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Untuk secara permanen menambahkan variabel lingkungan di Ubuntu (diuji hanya di 14.04), gunakan langkah-langkah berikut:
sudo -Jam gedit /etc/environment
FOO=bar
, maka hanya menulis FOO=bar
di baris baruUntuk mendapatkan lingkungan/var perubahan untuk bertahan setelah script selesai, anda harus menggunakan'source ./script.shatau notasi singkat untuk sumber, ".", seperti
. ./script.sh`
Sumber akan mengeksekusi perintah script seperti jika anda mengetik mereka dalam... sehingga tidak mengubah beberapa aspek dari script, seperti keluar... jadi jika naskah anda memeriksa sesuatu dan memutuskan untuk keluar jika palsu, misalnya, melalui panggilan exit 0
, itu akan menghentikan anda saat ini terminal / shell sesi.
Jika anda melakukan hal-hal melalui script, salah satu cara mudah untuk set variabel environment secara permanen diletakkan di bawah pernyataan dalam naskah anda,
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Jika anda perlu untuk evaluage ekspresi seperti pwd, anda dapat menggunakan ini, misalnya,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Aku tahu itu's cukup terlambat, tapi jika anda ingin menambahkan variabel lingkungan untuk semua pengguna (misalnya JAVA pemakaian) - anda dapat melakukan hal-hal berikut:
Buka /etc/bash.bashrc
menggunakan nano (anda bisa menggunakan editor apa pun, saya tidak sukai VIM sebagai it's terburuk ketika datang ke pengguna keramahan - nothing personal).
Menambahkan ke file:
ekspor VAR=jalan export PATH=$PATH:/bin
3) (lebih Baik jika anda bisa bangkit kotak) - atau hanya membuka sesi SSH dan konfirmasi menggunakan `env' perintah.
TETAPI JIKA anda ingin setiap pengguna untuk memiliki pengaturan yang terpisah untuk ini, anda harus membuat perubahan (naskah) untuk .bashrc
file di bawah ~/.bashrc
(atau /home/$USER/
jika anda baru untuk sistem Linux)