Saya telah menulis skrip berikut untuk mengatur beberapa variabel lingkungan saat diperlukan.
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
Di bawah perintah dan hasil yang dapat saya lihat di terminal saya: skrip berjalan, tetapi variabel tidak diatur di akhir.
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
Apa yang salah? Terima kasih sebelumnya. Mirko
sumber
export
meneruskan variabel ke subkulit, subkulit adalah salinan dari shell Anda saat ini, termasuk variabel dan fungsi dll. Variabel yang diekspor akan disalin ke proses baru yang dihasilkan dari shell, terlepas dari proses itu menjadi shell lain atau tidak. Kedua,.
adalah perintah POSIX untuk sumber. Bash menambahkansource
sebagai sinonim yang lebih mudah dibaca untuknya, tetapi Anda tidak dapat mengandalkannya yang tersedia di sh. Terakhir. ./script
alih-alih. script
jika Anda ingin menghindari kejutan. mywiki.wooledge.org/BashFAQ/060Saat Anda menjalankan skrip, skrip berjalan dalam subkulit. Variabel hanya valid dalam konteks subkulit itu. Atur di
.bashrc
atau atau.profile
baca variabel dan subkulit Anda . Theexport
Pernyataan bekerja bawah hirarki (shell saat ini dan semua subkulit itu) tidak sampai seperti dalam contoh Anda.Atau (jika Anda benar-benar ingin skrip mempengaruhi lingkungan shell Anda saat ini) jalankan sebagai:
Itu menyebabkannya berjalan di shell Anda saat ini tetapi tidak akan melewatkan variabel hierarki.
sumber
Saya sering ingin mengatur variabel lingkungan tanpa kerumitan.
Inilah yang saya tambahkan ke .bashrc saya untuk mengimplementasikan kenyamanan ini.
sumber
Anda dapat mencoba sesuatu seperti ini
sumber