Saya memiliki tmp.txt
file yang berisi variabel yang akan diekspor, misalnya:
a=123
b="hello world"
c="one more variable"
Bagaimana saya bisa mengekspor semua variabel ini menggunakan export
perintah, sehingga nanti bisa digunakan oleh proses anak?
.env
file secara otomatis saat Andacd
masuk ke direktori.Jawaban:
Menilai dengan pertanyaan Anda yang lain, Anda tidak ingin meng-hardcode nama variabel:
menguji:
sumber
grep
untuk melewati komentar:export $(grep --regexp ^[A-Z] tmp.txt | cut -d= -f1)
set -a
menyebabkan variabel¹ yang didefinisikan mulai sekarang akan diekspor secara otomatis. Ini tersedia di shell seperti Bourne..
adalah nama standar dan Bourne untuksource
perintah jadi saya lebih suka untuk portabilitas (source
berasal daricsh
dan sekarang tersedia di sebagian besar shell mirip Bourne modern termasukbash
(kadang-kadang dengan perilaku yang sedikit berbeda)).Dalam shell POSIX, Anda juga dapat menggunakan
set -o allexport
cara alternatif yang lebih deskriptif untuk menuliskannya (set +o allexport
untuk tidak disetel).¹ Dalam
bash
, berhati-hatilah bahwa itu juga menyebabkan semua fungsi yang dideklarasikan ketikaallexport
sedang diekspor ke lingkungan (sebagaiBASH_FUNC_myfunction%%
variabel lingkungan yang kemudian diimpor oleh semuabash
shell dijalankan di lingkungan itu, bahkan ketika berjalan sebagaish
).sumber
Kerjakan saja:
sumber
set -a
akan jauh lebih sederhana, tetapi ini benar-benar berhasil.