Saya menjalankan Ubuntu 11.04. Saya menggunakan terminal untuk memulai sesi bash, dan saya ingin menambahkan variabel lingkungan:
$r@hajt:~$ env THEVAR=/example
Tapi itu tidak berhasil. Ini menunjukkan semua variabel dengan THEVAR menjadi yang terakhir, tetapi panggilan lain untuk env
tidak menunjukkan THEVAR
lagi- env | grep THEVAR
tidak menghasilkan apa-apa.
Demikian pula, skrip dengan ekspor ( export THEVAR=/example
) atau penugasan variabel lainnya ( THEVAR=/example
) tidak menambahkan variabel lingkungan.
Saya tahu saya melakukan sesuatu yang salah, saya tahu itu harus sesuatu yang sederhana, tetapi saya tidak dapat menemukan apa.
UPDATE: Arti sebenarnya dari pertanyaan saya adalah ini: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Pokoknya saya akan memilih jawaban yang paling banyak dipilih dan meninggalkan judul yang diedit - itu bukan yang saya minta)
env
menjalankan program di lingkungan yang dimodifikasi, lalu menolak semua perubahan.
THEVAR=/example
?Jawaban:
Untuk mengatur variabel hanya untuk shell saat ini:
Untuk mengaturnya untuk shell saat ini dan semua proses dimulai dari shell saat ini:
Untuk mengaturnya secara permanen untuk semua sesi pesta di masa yang akan datang tambahkan baris tersebut ke
.bashrc
file Anda di$HOME
direktori Anda .Untuk mengaturnya secara permanen, dan lebar sistem (semua pengguna, semua proses) menambahkan variabel set di / etc / environment:
File ini hanya menerima tugas variabel seperti:
Jangan gunakan
export
kata kunci di sini.Anda harus keluar dari pengguna saat ini dan masuk lagi agar perubahan variabel lingkungan terjadi.
sumber
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Untuk mengatur variabel lingkungan sekali, gunakan
export
perintah di prompt, bukan di skrip shell:Variabel akan ditetapkan untuk sisa sesi shell atau sampai tidak disetel.
Untuk mengatur variabel lingkungan setiap kali, gunakan
export
perintah dalam.bashrc
file (atau file inisialisasi yang sesuai untuk shell Anda).Untuk mengatur variabel lingkungan dari skrip, gunakan
export
perintah dalam skrip, dan kemudiansource
skrip. Jika Anda menjalankan skrip itu tidak akan berfungsi.Untuk penjelasan tentang perbedaan antara sumber dan pelaksana lihat jawaban ini: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- bash-script / 176788 # 176788
sumber
Untuk secara permanen menambahkan variabel lingkungan baru di Ubuntu (hanya diuji pada 14.04), gunakan langkah-langkah berikut:
sudo -H gedit /etc/environment
mis. Jika Anda ingin menambahkan
FOO=bar
, maka cukup tulisFOO=bar
di baris barusumber
sudo gedit
(Lihat askubuntu.com/questions/270006/… ) danchmod 777
. Yang terakhir tidak boleh dilakukan pada file konfigurasi sistem.if
atautest
)Foo="bar"
?Untuk mendapatkan perubahan lingkungan / var bertahan setelah skrip selesai, Anda harus menggunakan
source ./script.sh
atau notasi singkatan untuk sumber, ".", Seperti. ./script.sh
Sumber akan menjalankan perintah dalam skrip seolah-olah Anda telah mengetiknya ... jadi itu mengubah beberapa aspek skrip, seperti keluar ... jadi jika skrip Anda memeriksa sesuatu dan memutuskan untuk keluar jika salah, misalnya, melalui panggilan
exit 0
, itu akan mengakhiri sesi terminal / shell Anda saat ini.sumber
Jika Anda melakukan sesuatu melalui skrip, satu cara mudah untuk mengatur variabel lingkungan secara permanen adalah dengan menuliskan pernyataan di bawah ini dalam skrip Anda,
Jika Anda perlu mengevaluasi ekspresi seperti pwd, Anda dapat menggunakan ini, misalnya,
sumber
Saya tahu ini agak terlambat, tetapi jika Anda ingin menambahkan variabel lingkungan untuk semua pengguna (misalnya penggunaan JAVA) - Anda dapat melakukan hal berikut:
1) Buka
/etc/bash.bashrc
menggunakan nano (Anda dapat menggunakan editor apa pun, saya tidak suka VIM karena ini adalah yang terburuk dalam hal keramahan pengguna - bukan masalah pribadi).2) Tambahkan ke file:
export VAR=path export PATH=$PATH:/bin
3) (Lebih baik jika Anda dapat memantulkan kotak) - atau cukup buka sesi SSH baru dan konfirmasikan menggunakan perintah `env '.TETAPI JIKA Anda ingin setiap pengguna memiliki pengaturan terpisah untuk ini, Anda harus membuat perubahan (dituliskan) ke
.bashrc
file di bawah~/.bashrc
(atau/home/$USER/
jika Anda baru mengenal sistem Linux)sumber