シェルスクリプトの起動時にロードする必要がある一連の環境変数を含む.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
値はシェルを初期化したコマンドを含むファイル名に解決されます。名前。検索結果ファイル名には使用されません。~/.bashrc
BASH_ENV
PATH
あなたのスクリプトはいいえコマンドラインでbash
他のスクリプト言語への明示的なインタプリタを使用している場合(たとえば、質問で行ったように)によって実行されます。sh