我已經安裝了標準Ruby和Ruby Enterprise的登臺服務器。由於標準的Ruby拒絕安裝關鍵的寶石,我需要設置$ PATH以便ruby/gem/rake /等。請始終參考REE版本。因爲我使用Capistrano來部署到我們的機器上,所以我需要在Capistrano中完成。Capistrano:我可以爲整個上限會話設置一個環境變量嗎?
如何設置環境變量一次,並在整個Capistrano會話中保留它?
1)在bashrc文件中很容易做到,但Capistrano不讀取bashrc文件。
2)我會使用Capistrano酒店的
default_environment['PATH'] = 'Whatever'
但Capistrano的使用像
env PATH=Whatever command arg ...
這些環境變量,每當另一個shell傳遞給env中的可執行文件中紡達,他們迷路了。就像你使用sudo一樣。這是有點重要:
[[email protected] trunk]$ env VAR=hello ruby -e "puts ENV['VAR']"
hello
[[email protected] trunk]$ env VAR=hello sudo ruby -e "puts ENV['VAR']"
nil
3)我不能使用bash的export命令,因爲這些都是失去了太多 - Capistrano的似乎開始爲每個命令一個新的外殼(或類似的東西),和即失去了,太:
cap> export MYVAR=12
[establishing connection(s) to xxx.xxx.xxx.xxx]
cap> echo $MYVAR
** [out :: xxx.xxx.xxx.xxx]
cap>
4)我試着用Capistrano酒店的搞亂:殼:PTY選項,以及(並與其他方法結合),但沒有運氣,無論是。
那麼 - 正確的方法是什麼?這似乎是這樣一個基本任務,應該有一個非常簡單的方法來完成它,但我沒有想法。任何人?
在此先感謝!
好的電話 - 我不知道sudo模糊了當地的環境。看起來只是添加-E選項修復了大多數情況,但$ PATH是特殊的([參考](http://stackoverflow.com/questions/257616/sudo-changes-path-why))。我會多花一點時間回到你身邊。乾杯! –