2013-11-04 41 views
1

每次打開終端時,我的Ruby版本都是錯誤的。我不得不手工執行以下命令:打開終端時正確的Ruby版本

source /usr/local/rvm/scripts/rvm 

,我讀了RVM不修改.bashrc或者.bash_profile中,但我注意到,我的.bashrc有結尾:

PATH=$PATH:$HOME/.rvm/bin 

不僅我自己沒有插入這個,而且rvm的路徑也是錯誤的! 我的改變:

PATH=$PATH:/usr/local/rvm/bin 

我重新打開一個終端,但Ruby的版本永遠是錯的!

+0

rvm位於/ usr/local /文件夾中的事實告訴我,您至少在某些時候以root身份安裝了RVM。這是一個非典型的安裝。您可能想要更正此問題並將RVM安裝爲正常開發用戶。 – vgoff

回答

2

RVM並修改你的.bash_profile/.bashrc中 - 這是它的一個弱點。特別是,它增加了(應該補充)這一行加載RVM作爲外殼的功能:

# Load RVM into a shell session as a function 
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

我有一個類似的問題與錯誤的紅寶石版本甚至跑步後,我在rvm--改變了全球默認確保這條線是在我的.bash_profile的末尾修復它的。無論如何,那條線應該在那裏讓rvm正常工作。

+1

我不知道我是否認爲這是一個弱點......你應該在哪裏指出你的環境需要修改以便登錄。無論如何,這並不能解決他的問題。它沒有解決他安裝RVM的位置。 – vgoff

+0

它可能不(但它可能)。在不知道他的設置細節的情況下,我認爲應該解決從他的bash_profile中刪除該行,因爲這對rvm的功能至關重要。 並且爲了澄清,作爲shell函數加載是相對於rbenv而言的一個弱點,它沒有這個要求。 – jkrmr

0

您可以在應用程序的根目錄中創建一個.rvmrc文件。

它運行一切是在裏面打開根部直接,所以我覺得你可以複製這個

PATH=$PATH:/usr/local/rvm/bin 

,事情應該是不錯的。您會收到警告,但可以忽略(或者以我的經驗)。我認爲你可能比這更好,我發現它有助於讓Ruby/Gemset在應用程序中直線前進。

#.rvmrc 
rvm [ruby]@[gemset] #for example rvm [email protected]_gemset 

爲什麼gemsets /紅寶石獲得切換/復位首先,我真的不知道,這是煩人,但是這似乎解決它。

更多here

0

根據您的設置,無法加載的原因有幾個。例如,當你打開一個shell(取決於操作系統的發行版本)時,bash文件是以各種順序讀取的,儘管這裏是標準的樣子:(我相信Ubuntu略有不同,所以你可能想檢查一下那是你的發行版)。

# for interactive login shells (when you login to a terminal) 
/etc/profile 
/home/<user>/.bash_profile 
/home/<user>/.bash_login # if there is no .bash_profile 
/home/<user>/.profile # if there is no .bash_login 
# for interactive non-login shells (i.e. opening up a new tab) 
/etc/bash.bashrc 
/home/<user>/.bashrc 

當您直接輸入.bashrc時會發生什麼?它會找到rvm嗎?如果是這樣,那麼它只是確保你的.bash_profile來源的.bashrc又名事項:

# in .bash_profile 
if [ -f ~/.bashrc ]; then 
    . ~/.bashrc 
fi 

如果這不是你可以潛入RVM文檔或切換到rbenv恕我直言,這是一個簡單得多的原因解。

0

RVM應該自動處理,但這段代碼是錯誤的。

PATH=$PATH:/usr/local/rvm/bin 

RVM的路徑應該是第一個。你的bash就像你實際上希望一樣。它首先使用'全系統'紅寶石,因爲你告訴你的shell要這麼做。更改爲:

PATH=/usr/local/rvm/bin:$PATH 

然後source ~/.bashrc,也將努力按照您的意願,呼籲rvm紅寶石,當你登錄。