我正在嘗試創建一個Shell腳本來自動執行我的本地開發環境。我需要它啓動一些進程(Redis,MongoDB等),設置環境變量,然後啓動本地Web服務器。我正在開發OS X El Capitan。在shell腳本中設置環境變量OS X
到目前爲止,除了環境變量之外,一切都工作正常。下面是該腳本:
#!/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
的.env
文件使用export VARIABLE="value"
環境變量只是沒有被設置在所有的格式。但是,如果我在運行腳本之前運行確切的命令source path-to-file.env
,那麼它可以工作。我想知道爲什麼命令可以獨立工作,但不在shell腳本中。
任何幫助,將不勝感激。
該文件究竟是什麼? echo $ -'如何在您的交互式shell和它所在的腳本之間進行比較? –
......最有可能的情況是你在'〜/ .bashrc'或類似文件中運行'set -a'。 –
(假設有合理的期望 - 即,您不希望腳本退出後變量交互式可用)。 –