envファイルから環境変数を読み取り、コマンドを実行するユーティリティ(フォアマンよりも軽量)はありますか?


16

foreman .envファイルを読み取り、コンテンツから環境変数を設定し、プログラムを実行できます

例えば foreman run -e vars.env myprogram

...しかし、それは他の多くのことを行います(そして、主にProcfile形式を使用して物事を開始することに関係しています)。

.envファイルの読み取りと新しい環境でのコマンドの実行に焦点を合わせたシンプルな(Linux / Unix)ツールはありますか?

サンプル環境ファイル(http://ddollar.github.io/foreman/#ENVIRONMENTから):

FOO=bar
BAZ=qux

1
サンプルの.envファイルを投稿できますか?私は疑わしい、bash .envまたはsh .env働くかもしれない?
ダニエルウィドリック

@ IVlint67質問を少し改善しました。
ワドウ

回答:


19

環境ファイルをアクティブシェルでソースし、プログラムを実行できます。

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

-aスイッチは、彼らがプログラムに利用できるように、すべての変数をエクスポートします。


3
bash -ac 'source .env && ./program'
フィアットヤフ

@fiatjaf POSIXシェルがジョブを実行し、実際にbashを必要とする機能が必要ない場合、なぜこの場合にbashを使用するのでしょうか?さらに、bashはデフォルトではすべてのシステム(FreeBSDなど)で利用できるわけではありません。
マルコ

ああ、そう、理にかなっています、あなたのやり方はもっと良いと思います。Bashの代替を提供するだけでした。
フィアットヤフ

2

別の選択肢はenvdir次のとおりです。

envdirは、指定されたディレクトリ内のファイルに従って環境が変更された別のプログラムを実行します。


この投稿は、間にいくつかの補完的な機能に言及しenvdirrunitchpst。つまり、環境変数を変更した能力は、実行中のプロセスの状態に反映されます。投稿はドッカーについてですが、ドッカーに限定されません。blog.ghaering.de/post/docker-as-vm [archive.org:web.archive.org/web/20190321165332/https://blog.ghaering.de/... ]
driftcatcher

2

私は試してみたがsource .env、それは魅力のように働いた。残念ながら、ここに投稿された他のソリューションはどれも私にとってはうまくいきませんでした。


0

これは動作します:

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

ただし、.envファイルの形式が正しいかどうかは明らかにチェックしません。これはユーティリティプログラムで確認できます。


1)catは必要ありません。ただ書くだけですtr "\\n" " " < .env。2)複数行の割り当てが使用されている場合、これは壊れます。
マルコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.