bagaimana mengatur variabel lingkungan pada kulit ikan

91

Bisakah seseorang memberi tahu saya apa cara yang benar untuk mengatur banyak variabel lingkungan di cangkang ikan?

Di file .config / fish / config.fish saya, saya memiliki fungsi untuk mengatur variabel lingkungan saya seperti itu

function setTESTENV
      set -x BROKER_IP '10.14.16.216'
      set -x USERNAME 'foo'
      set -x USERPASS 'bar'
end 

ketika saya mengetik dari command prompt setTESTENVdan melakukan a envdi baris perintah, saya tidak melihat informasi ini.

cfpete
sumber

Jawaban:

70

Variabel yang Anda deklarasikan disimpan dalam lingkup lokal di dalam fungsi Anda.

Menggunakan:

set -g -x

Di sini " g" untuk global.

JosEduSol
sumber
152

Gunakan Variabel Universal

Jika variabel harus dibagikan antara semua instance ikan pengguna saat ini di komputer saat ini dan disimpan di seluruh restart shell, Anda harus menggunakan -Uatau --universal:

set -Ux FOO bar

Menggunakan setdengan -gatau --globaltidak menyetel variabel secara terus-menerus di antara instance shell


Catatan :

Jangan menambahkan variabel universal dalam config.fishfile, karena variabel ini akan menjadi lebih lama dengan setiap instance shell baru. Sebagai gantinya, jalankan set -Uxsekali pada baris perintah. Dan itu akan disimpan dalam file .config/fish/fishd.MACHINE_ID, di mana MACHINE_IDbiasanya alamat MAC Anda.

Paolo Moretti
sumber
Variabel saya tidak disimpan di fishd.MACHINE_ID, tetapi disimpan ke~/.config/fish/fish_variables
Seanny123
variabel saya disimpan di ~/.config/fish/fish_variablesubuntu 20.04
Igor Markelov
11

opsi lain adalah menjalankan:

export (cat env_file.txt |xargs -L 1)

di mana env_file.txt berisi baris-baris format VAR=VALUE

ini memiliki keuntungan untuk menyimpan variabel dalam format yang didukung oleh shell dan alat lain

Ophir Yoktan
sumber
Jika Anda ingin menghindari komentar, Anda dapat: export (grep "^[^#]" .env |xargs -L 1)
Guillermo
10

Variabel Lingkungan pada Ikan

Saya ingin menambahkan bahwa, sementara jawaban @ JosEduSol tidak salah dan tidak membantu memecahkan masalah OP, -ghanya mengatur cakupan menjadi global, sementara -xmenyebabkan variabel lingkungan yang ditentukan diekspor ke proses anak.

Alasan kegagalan di atas, adalah karena @cfpete menyetel env vars di dalam fungsi dan cakupan default akan menjadi lokal untuk fungsi itu.

Jorge Bucaran
sumber