コマンドラインで環境変数ファイルをどのように設定しますか?

コマンドラインで環境変数ファイルをどのように設定しますか?

シェルスクリプトの起動時にロードする必要がある一連の環境変数を含む.env.localファイルがあります。コマンドラインでこのファイルを指定する方法はありますか?

.env.local

ONEDRIVE_TENANT_ID=...
ONEDRIVE_CLIENT_ID=...
ONEDRIVE_CLIENT_SECRET=...

シェルスクリプト:script.sh

#!/usr/bin/env bash
TENANT_ID=${ONEDRIVE_TENANT_ID}
CLIENT_ID=${ONEDRIVE_CLIENT_ID}
CLIENT_SECRET=${ONEDRIVE_CLIENT_SECRET}
REDIRECT_URI=${ONEDRIVE_REDIRECT_URI}
curl REDIRECT_URI ...

試してみましたが、source .env.local; sh script.sh期待どおりに動作しません!
Ps、スクリプトはさまざまな環境で実行されるため、スクリプトにソースコードを追加することはできません。したがって、.env.local の絶対パスは環境によって異なります。

ベストアンサー1

BASH_ENV変数の割り当てにより、ドットスクリプトを指すように設定できます。これにより、スクリプトを実行する前にシェル変数が自動的に取得され、スクリプトでシェル変数を使用できるようになります。

BASH_ENV=path/to/.env.local ./script.sh

スクリプトscript.shの場合は、ドットスクリプトの変数(および関数など)にアクセスできます。bash.env.local

bashマニュアルから:

BASH_ENV
シェルスクリプトの実行時にこのパラメータを設定すると、そのbash値はシェルを初期化したコマンドを含むファイル名に解決されます。名前。検索結果ファイル名には使用されません。~/.bashrcBASH_ENVPATH


あなたのスクリプトはいいえコマンドラインでbash他のスクリプト言語への明示的なインタプリタを使用している場合(たとえば、質問で行ったように)によって実行されます。sh

おすすめ記事