balık kabuğunda ortam değişkenleri nasıl ayarlanır


91

Birisi bana balık kabuğunda bir grup ortam değişkenini ayarlamanın doğru yolunun ne olduğunu söyleyebilir mi?

.Config / fish / config.fish dosyamda, ortam değişkenlerimi şu şekilde ayarlamak için bir işlevim var

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

komut isteminden yazdığımda ve komut satırında setTESTENVbir envyaptığımda, bu bilgileri görmüyorum.

Yanıtlar:


70

Bildirdiğiniz değişkenler, fonksiyonunuzun içinde yerel bir kapsamda tutulur.

Kullanım:

set -g -x

Burada " g" global içindir.


152

Evrensel Değişkenleri Kullanın

Değişkenin mevcut bilgisayardaki tüm mevcut kullanıcı balık örnekleri arasında paylaşılması ve kabuğun yeniden başlatılması boyunca korunması gerekiyorsa, kullanmanız -Uveya --universal:

set -Ux FOO bar

Kullanımı setile -gya da --globalsürekli kabuk örnekleri arasında değişken ayarlamaz


Not :

config.fishDosyadaki evrensel değişkenlere eklemeyin , çünkü bu değişkenler her yeni kabuk örneğinde daha uzun olacaktır. Bunun yerine, set -Uxkomut satırında bir kez çalıştırın . Ve genellikle MAC adresinizin .config/fish/fishd.MACHINE_IDbulunduğu dosyada saklanacaktır MACHINE_ID.


Değişkenlerim kaydedilmedi fishd.MACHINE_ID, bunun yerine kaydedildi~/.config/fish/fish_variables
Seanny123

değişkenim ~/.config/fish/fish_variables20.04 ubuntu'da kaydedildi
Igor Markelov

11

başka bir seçenek de çalıştırmaktır:

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

env_file.txt, biçimin satırlarını içerdiğinde VAR=VALUE

bu, değişkenleri diğer kabuklar ve araçlar tarafından desteklenen bir formatta tutma avantajına sahiptir


Yorumlardan kaçınmak istemeniz durumunda şunları yapabilirsiniz: export (grep "^[^#]" .env |xargs -L 1)
Guillermo

10

Balıklarda Ortam Değişkenleri

@ JosEduSol'un cevabı yanlış olmasa ve OP sorununun çözülmesine yardımcı -golurken -x, belirtilen ortam değişkeninin alt süreçlere aktarılmasına neden olurken yalnızca kapsamı genel olarak ayarlamak olduğunu eklemek isterim .

Yukarıdakilerin başarısız olmasının nedeni, @cfpete'nin env değişkenlerini bir işlev içinde ayarlaması ve varsayılan kapsamın bu işlev için yerel olmasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.