Ortam değişkenlerini bir env dosyasından okumak ve ardından bir komut çalıştırmak (ustabaşıdan daha hafif) için bir yardımcı program var mı?


16

foreman .env dosyalarını okuyabilir ve içeriklerden ortam değişkenlerini ayarlayabilir ve ardından bir program çalıştırabilir

Örneğin foreman run -e vars.env myprogram

... ama başka birçok şey yapıyor (ve öncelikle Procfile biçimini kullanarak bir şeyler başlatmakla ilgileniyor).

.Env dosyalarını okumaya ve yeni ortamla bir komut yürütmeye odaklanan daha basit (Linux / Unix) bir araç var mı?

Örnek ortam dosyası ( http://ddollar.github.io/foreman/#ENVIRONMENT adresinden ):

FOO=bar
BAZ=qux

1
Örnek bir .env dosyası gönderebilir misiniz? Şüpheliyim bash .envveya sh .envçalışabilir miyim?
Daniel Widrick

@ IVlint67 Soruyu biraz geliştirdim.
wodow

Yanıtlar:


19

Ortam dosyasını etkin kabukta kaynaklayabilir ve programı çalıştırabilirsiniz:

sh -ac ' . ./.env; /usr/local/bin/someprogram'

-aAnahtar onlar programa mevcuttur böylece, bütün değişkenleri ihraç ediyor.


3
bash -ac 'source .env && ./program'
19'da fiatjaf

@fiatjaf POSIX kabuğu işi yapıyorsa ve bash gerektiren bir özelliğe ihtiyacınız yoksa neden bash'ı kullanasınız ki? Ayrıca, bash varsayılan olarak tüm sistemlerde kullanılamaz (örn. FreeBSD).
Marco

Oh, doğru, mantıklı, bence yolun daha iyi. Sadece Bash alternatifini sunuyordum çünkü yazarken daha rahat hissettim.
fiatjaf

2

Başka bir alternatif envdir:

envdir, belirtilen dizindeki dosyalara göre değiştirilmiş ortam ile başka bir program çalıştırır.


Bu yayın arasında bir tamamlayıcı özellikleri söz envdir, runitve chpst; yani env değişme kabiliyeti, yürütülen sürecin durumuna yansır. Gönderi docker ile ilgili ancak docker ile sınırlı değil. blog.ghaering.de/post/docker-as-vm [archive.org: web.archive.org/web/20190321165332/https://blog.ghaering.de/… ]
driftcatcher 21:19

2

Denedim source .envve bir cazibe gibi çalıştı. Ne yazık ki, burada yayınlanan diğer çözümlerin hiçbiri benim için işe yaramadı.


0

Bu çalışıyor:

env $(cat .env | tr "\\n" " ") myprogram

ancak açıkçası .envbir yardımcı programın yapacağı doğruluk için dosyanın biçimini kontrol etmez .


1) catGerekli değildir, sadece yazın tr "\\n" " " < .env2) Çok satırlı atamalar kullanılırsa bu kesilir.
Marco
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.