apa maksudmu ekspor sekaligus? Anda dapat menggunakan titik koma untuk mendefinisikan dalam satu baris ... seperti a = 123; b = "asd asd"; c = "hello world"
setjuga menampilkan fungsi dan variabel sistem seperti BASH_VERSION
glenn jackman
Pertanyaan Anda tidak jelas. Apakah itu kutipan setoutput yang Anda tampilkan? Jika demikian, maka itu bukan bashmiliknya. Apakah Anda ingin mengekspor semua variabel yang saat ini ditetapkan termasuk variabel shell khusus? Atau hanya 3 variabel yang suka di export a b c?
Stéphane Chazelas
export ${!T*}akan mengekspor parameter yang ditentukan yang namanya dimulai dengan T. Sayangnya, sepertinya tidak ada cara untuk dengan mudah menghasilkan daftar semua parameter yang ditentukan.
chepner
Jawaban:
72
Jalankan perintah berikut, sebelum mengatur variabel:
set-a
halaman manual:
-a
Ketika opsi ini aktif, atribut ekspor harus ditetapkan untuk setiap variabel yang melakukan tugas;
Untuk mematikan opsi ini, jalankan set +asesudahnya.
Sekarang, kita perlu mengekspor variabel-variabel ini, tetapi xargs tidak dapat melakukan ini karena itu mem-proses proses anak, ekspor harus dijalankan dalam proses saat ini. echo "export" ...buat perintah yang kita inginkan, lalu gunakan `` untuk menjalankannya. Itu saja: hlm.
Selamat datang di U&L SE. Mungkin Anda dapat mengedit posting Anda dan memberikan beberapa penjelasan.
Archemar
1
Tidak benar untuk menganggap nama variabel lingkungan hanya akan terdiri dari az dan AZ. Mereka biasanya menyertakan garis bawah dan angka juga, jadi polanya [a-zA-Z_][a-zA-Z0-9_]*. Ada beberapa variasi pada ini berdasarkan pada shell yang Anda gunakan, tetapi ini adalah pendekatan yang aman / portabel.
Chris Johnson
Poin bagus @ ChrisJohnson - diperbarui!
Wil Moore III
3
Anda dapat menambahkan exportke nama variabel melalui awkdan evaloutput yang dihasilkan:
set
juga menampilkan fungsi dan variabel sistem seperti BASH_VERSIONset
output yang Anda tampilkan? Jika demikian, maka itu bukanbash
miliknya. Apakah Anda ingin mengekspor semua variabel yang saat ini ditetapkan termasuk variabel shell khusus? Atau hanya 3 variabel yang suka diexport a b c
?export ${!T*}
akan mengekspor parameter yang ditentukan yang namanya dimulai denganT
. Sayangnya, sepertinya tidak ada cara untuk dengan mudah menghasilkan daftar semua parameter yang ditentukan.Jawaban:
Jalankan perintah berikut, sebelum mengatur variabel:
halaman manual:
Untuk mematikan opsi ini, jalankan
set +a
sesudahnya.Contoh:
Dimana
environment
berisi:sumber
function example(){ echo good; }; export -f example
Pertama, dapatkan semua variabel lingkungan yang ditetapkan:
(set -o posix ; set)
Referensi: https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a- linux-baDapatkan semua nama variabel lingkungan, dipisahkan oleh spasi:
awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
Referensi: awk-Mencetak nilai kolom tanpa baris baru dan menambahkan koma dan https://stackoverflow.com/questions/14212993/ Regular-expression-to-match-a-pattern-inside- perintah awkSekarang, kita perlu mengekspor variabel-variabel ini, tetapi xargs tidak dapat melakukan ini karena itu mem-proses proses anak, ekspor harus dijalankan dalam proses saat ini.
echo "export" ...
buat perintah yang kita inginkan, lalu gunakan `` untuk menjalankannya. Itu saja: hlm.sumber
[a-zA-Z_][a-zA-Z0-9_]*
. Ada beberapa variasi pada ini berdasarkan pada shell yang Anda gunakan, tetapi ini adalah pendekatan yang aman / portabel.Anda dapat menambahkan
export
ke nama variabel melaluiawk
daneval
output yang dihasilkan:sumber
printenv
mencetak variabel yang sudah diekspor. Itu juga tidak akan berfungsi dengan baik jika ada variabel yang berisi karakter baris baru.Ini berfungsi jika shell Anda adalah bash (mungkin juga shell lain)
file baru Anda akan berisi dump semua variabel yang saat ini didefinisikan ... dengan entri seperti
kemudian untuk mendongkrak shell saat ini dengan semua masalah yang terkait
sumber