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.

Jawaban:


70

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

Menggunakan:

set -g -x

Di sini " g" untuk global.


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.


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.