2014-01-13 70 views
0

我想讓我的系統自動加載一個包含一些環境變量的文件,以便在我的rails項目中使用,而不僅僅是將它們導出到shell,但我似乎無法使其工作。包含env vars不加載的文件

我使用的是mac osx 10.6

這些是我遵循的步驟。

nano .bash_profile 

export PATH=Users/Moshe/env_vars:$PATH 

touch env_vars 

nano env_vars 

DEV_DB=TestDB 
export DEV_DB 

DEV_DB_HOST=12.34.56.78 
export DEV_DB_HOST 

exit 

我重新打開外殼和

printenv 

,但我沒有看到我設置

然而瓦爾我看到它Users/Moshe/env_vars路徑時,我echo $PATH

我試圖看着這個答案,但我似乎無法看到我做錯了什麼

Setting environment variables in OS X?

+0

刪除'exit'的話,那麼問題在命令行中你的腳本如下:'。 your_script.sh' –

+0

了'exit'不寫我剛纔輸入的是到終端通過鍵入命令確保其重載 – Moshe

+0

是的,我現在看到了 但我希望這個自動發生時,無需輸入加載發生任何命令 – Moshe

回答

1

請勿使用exit關鍵字。無論是將代碼插入到的.bash_profile,或將其存儲到特定的文件,例如your_script.sh,並從調用的.bash_profile如下:

. your_script.sh 
1

環境變量不會從您的$PATH中找到的文件中讀取;當您在shell中鍵入命令時,將搜索您的$PATH以查找可執行文件

要加載的變量,你需要「源」,而不是在文件:(請注意,您還需要初始/使文件名絕對)

# .bash_profile 
source /Users/Moche/env_vars 

而且,由於您使用的是Ruby,因此您可能有興趣使用dotenv gem。通過dotenv,您可以在Rails項目的根目錄中的.env文件中指定環境變量,並在啓動時自動加載它們。這將每個項目所需的變量保持在代碼附近,並使您的項目更具可移植性(例如,您可以使用它來部署像Heroku這樣的服務)。只要確保你沒有將.env加入到你的版本控制中,前提是它有任何敏感信息,比如密碼!

+0

我也會考慮這樣做寶石 – Moshe

+0

,但我只是想從出口變化與絕對路徑源和仍然沒有顯示出來 – Moshe

+0

你重新源的'.bash_profile'? (終端上的'source〜/ .bash_profile',或保存更改後打開新的終端窗口。) –

相關問題