簡體   English   中英

在Shell腳本OS X中設置環境變量

[英]Setting environment variables in shell script OS X

我正在嘗試創建一個Shell腳本來自動化我的本地開發環境。 我需要它啟動一些進程(Redis,MongoDB等),設置環境變量,然后啟動本地Web服務器。 我正在使用OS X El Capitan。

到目前為止,一切正常,除了環境變量。 這是腳本:

#!/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腳本中運行。

任何幫助,將不勝感激。

當您執行腳本時,它會在子shell中執行,並且當該子shell退出時,其環境設置會丟失。 如果你想從腳本配置交互shell,你必須source在你的交互shell腳本。

$ source start-local.sh

現在環境應該出現在您的交互式外殼中。 如果您希望該環境被子Shell繼承,則還必須export所有需要的變量。 因此,例如,在path-to-file.env中,您需要以下行:

export MY_IMPORTANT_PATH_VAR="/example/blah"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM