ローカルの開発環境を自動化するシェルスクリプトを作成しようとしています。私はいくつかのプロセス(Redis、MongoDBなど)を開始し、環境変数を設定し、ローカルWebサーバーを起動する必要があります。私はOS X El Capitanに取り組んでいます。シェルスクリプトで環境変数を設定するOS X
これまで環境変数を除いてすべてが動作しています。 .env
ファイルは、環境変数はちょうどすべてで設定されていないexport VARIABLE="value"
形式を使用している
#!/bin/bash
# Starting the Redis Server
if pgrep "redis-server" > /dev/null
then
printf "Redis is already running.\n"
else
brew services start redis
fi
# Starting the Mongo Service
if pgrep "mongod" > /dev/null
then
printf "MongoDB is already running.\n"
else
brew services start mongodb
fi
# Starting the API Server
printf "\nStarting API Server...\n"
source path-to-file.env
pm2 start path-to-server.js --name="api" --watch --silent
# Starting the Auth Server
printf "\nStarting Auth Server...\n"
source path-to-file.env
pm2 start path-to-server.js --name="auth" --watch --silent
# Starting the Client Server
printf "\nStarting Local Client...\n"
source path-to-file.env
pm2 start path-to-server.js --name="client" --watch --silent
:ここにスクリプトがあります。しかし、スクリプトを実行する前に正確なコマンドsource path-to-file.env
を実行すると、それは機能します。私はなぜコマンドが独立して動作するのだろうと思っていますが、シェルスクリプト内では動作しません。
ご協力いただければ幸いです。
このファイルには正確には何が入っていますか? 'echo $ -'は、動作するインタラクティブシェルと、動作しないスクリプトとをどのように比較しますか? –
...最も可能性の高いシナリオは '〜/ .bashrc'やそれに類するもので' set -a'を実行しているということです。 –
(妥当な期待を前提としています。すなわち、スクリプトが終了した後に変数を対話的に利用できるとは思わない)。 –