2012-02-17 85 views
215

我剛安裝了RVM,但無法使其工作。我有這樣的線在我的.profile文件的末尾:rvm安裝不工作:「RVM不是功能」

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 

我試圖運行source .profile並重新啓動終端,不過,當我運行rvm use 1.9.2我越來越:

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 

我的系統是Ubuntu 11.10。

+1

我推薦你[rbenv](https://github.com/sstephenson/rbenv)作爲RVM的替代品。它不需要加載到你的shell中。 – drinor 2015-04-28 10:46:59

+1

無論哪個人在某些技術上有問題,總會有一位英雄穿着閃亮的盔甲,並提供寶貴的建議來拋棄該技術,並安裝完全另類的絕對令人驚歎的另一個沒有缺點的建議。這就好像我問了一些紅寶石問題,並且英雄立刻想出了「只需安裝java」=) – Clergyman 2017-07-08 14:52:44

回答

218

您未使用登錄shell。

啓用登錄標誌的過程描述爲here,還可以找到有關登錄shell的詳細信息here

因此,您需要在Gnome終端的設置中檢查選項「作爲登錄shell運行」。設置標誌後需要打開新的終端。

有時需要將命令設置爲/bin/bash --login


對於遠程連接它理解運行交互式ssh會話和執行單命令之間的differene是重要的。

在運行ssh server,然後與服務器交互的工作你默認使用的登錄shell,這一切都很好,但對於ssh server "command"不使用登錄shell,它會被要求與ssh server 'bash -lc "command"'運行它。

任何遠程調用都可能與執行單個命令ssh具有相同的問題。

+4

在mac上的等效解決方案是什麼? – 2012-05-08 16:39:01

+7

試試'rvm get stable --auto'並檢查你的終端設置。 – mpapis 2012-06-15 16:41:26

+8

fyi:設置完後,我們必須啓動一個新的終端。 – oma 2012-09-12 17:09:48

0

我得到了同樣的錯誤,因爲我曾經用apt-get命令安裝了舊的rvm版本ruby-rvm。

我通過刪除腳本行來配置舊的rvm .bashrc文件來解決問題。

檢查舊RVM配置腳本,然後運行源.profile文件,即使你接受了答案

5

,我想建議另一種方式的任何外殼打開之前..〜/ .bashrc中被加載。在最後添加該行,並且不需要任何登錄shell的東西

+0

「是登錄shell的事」是有原因的,我已經做了很多的測試與RVM採購和它是保證工作,而檢測不到和難以解決的錯誤的唯一方法 – mpapis 2012-03-30 07:54:32

+0

這並沒有爲我工作的。使用Mac OS X Lion。 – 2012-05-08 16:39:22

+0

@mpapis你能解釋一下原因嗎?從其他的答案,看起來像大多數的罰款與移動線RC文件 – balki 2015-11-01 21:42:07

19

最新的RVM(rvm 1.11.6(stable))在Ubuntu上停止工作(10.10 - 64位 - nerdy gnat或不管怎麼說) - 我不斷收到

「RVM不是一個函數,選擇'rvm use ...'的紅寶石將不起作用。」

之前,我收到了消息,但'rvm [email protected]'可以工作。現在,它不會工作 - 你根本無法改變寶石。

毫無效果,直到我發現了這個 - 使這最後一行在/home/your-name/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

+0

更正。這樣做: – 2012-04-05 17:01:27

+2

「RVM獲得穩定--auto」 加入到.bash_login文件[-s 「$ HOME/.rvm /腳本/ RVM」]] &&源 「$ HOME/.rvm /腳本/ RVM」,並從它刪除.bashrc - 我在.bashrc的末尾添加了source〜/ .bash_login,並且在中期修改了gemsets的任何腳本的開始日期 – 2012-04-05 17:26:49

398

您需要執行以下

$ source ~/.rvm/scripts/rvm 

然後運行這個

$ type rvm | head -n 1 

,如果你得到

rvm is a function 

問題解決了。

您還需要運行user$ rvm requirements看到您的操作系統依賴性要求

來源:https://rvm.io/rvm/install/

我忘記提到,你需要把這個代碼放到你的〜/ .bashrc或〜/ .zshrc文件,你不需要再次寫這個代碼。乾杯!

+1

這對OSX來說是完美的。謝謝! – cavneb 2012-07-12 21:41:48

+1

在OSX Mountain Lion上工作 – pws5068 2012-08-16 07:42:35

+2

謝謝。在Ubuntu 10.04上爲我工作。 – vekozlov 2012-09-05 18:08:22

3

程序在Mac OSX上安裝Ruby 1.9.3-P125 10.8山獅

  1. 你已經安裝了最新的XCode(> = 4.3)和命令行Objective-C 編譯器「clang」。
  2. 您必須運行「bash」shell才能使此過程正常工作。
  3. 進入系統設置的「用戶&組」
  4. 點擊單擊面板左下角的鎖並輸入您的密碼才能解鎖。
  5. 您的用戶圖標,在面板的左側窗格中「按住Ctrl單擊」選擇「高級選項...」
  6. 更改登錄shell「/斌/慶典」
  7. 關閉喜好
  8. 打開終端窗口(按命令+空格鍵和輸入 「終端」)
  9. 在按照說明:

http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

注:

  • 安裝Ruby,你可能需要指定鐺編譯:

    $ RVM安裝1.9.3p125 --with-GCC =鐺

  • 如果RVM抱怨大約在/ usr/local/rvm找不到,需要創建一個鏈接:

    $ ln -s/Users/[你的用戶名] /。RVM在/ usr /本地/ RVM

+0

我認爲他們現在已經達到了P194。如果您使用rvm install 1.9.3 --with-gcc = clang,您將自動獲得最新版本的1.9.3。 – 2012-08-18 18:25:56

+0

這可以作爲OSX的永久解決方案。謝謝! – nilesh 2014-02-22 20:40:18

9

正如你所說的,顯示的錯誤可能是下列之一。

RVM is not a function, selecting rubies with 'rvm use ...' will not work. 

You need to change your terminal emulator preferences to allow login shell. 
Sometimes it is required to use `/bin/bash --login` as the command. 
Please visit https://rvm.io/integration/gnome-terminal/ for a example. 

如以上所述,只需要輸入「/斌/慶典--login」在終端(重新啓動後終端),然後鍵入COMAND「RVM使用1.9.3」(用於例如)和它將開始使用相同的版本。

只需執行命令'ruby -v'來確認RVM正在使用Ruby的更新版本。

95

要永久解決這只是剪切/粘貼以下行:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

來源:~/.bash_profile文件

要:~/.bashrc文件

原因這部作品是.bashrc每次執行你輸入終端,並且每次登錄時都會輸入.bash_profile。這就是爲什麼解決方案/bin/bash --login有效,但每次進入終端時都必須這樣做。這種方式,你都設置到你的下一格式,你會忘記這一切的呢:)

+0

作爲一個屏幕用戶,我總是需要把這行放在'〜/ .bashrc'而不是'〜/ .bash_profile'中。 – ryenus 2014-05-11 04:27:57

+2

謝謝!我對gnome登錄所需的兩秒延遲感到非常困擾。這將防止這種延遲。 – KLVTZ 2014-05-31 22:08:35

+3

爲什麼rvm安裝不會自動執行此操作? – balki 2015-11-01 21:39:30

0

我有同樣的錯誤,但沒有此頁面上的解決方案,似乎工作。對我來說,這已經足夠給rvm可執行文件添加到我的路徑:

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

的Et瞧!

7

也許你可以試試初級講座:

  • 您的終端 - >
  • 編輯 - >
  • 檔案首選項 - >
  • 標題和命令 - >
  • 選中「運行命令登錄外殼「
  • 完成
+0

這是最簡單的解決方案和正確的解決方案,因爲正常的shell會跳過.profile,使用此選項將導致它加載並且根本不需要編輯.bashrc。 – DWils 2014-04-05 20:56:10

4

打開了終端,然後轉到編輯>配置文件首,然後去標籤「標題和命令」並勾選「運行命令登錄shell」。

啓動一擊,現在你可以直接從終端無需使用sudo的和錯誤的安裝寶石「RVM不是一個函數,選擇紅寶石與‘RVM使用......’將無法工作。」將被淘汰。

乾杯。

4

以上所有答案都是有效的。但是當我遇到同樣的問題時,解決方案如下:

  • 更新ZSH。 (由於某種原因試圖直接更新不要工作。從here的zsh(也就是說,如果你喜歡的zsh使用sudo chsh -s $(which zsh) $USER
  • 所以卸載並重新安裝更新版本)

  • 設置默認的shell)確保下面的代碼是在您.zshrc的底部才能在安裝後的最新RVM可能使用從official RVM site

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 
    source ~/.profile 
    
  • 最重要的一點捲曲:確保您的.zshrc文件中的每個出口PATH附有:$PATH。即使在遵循上述步驟之後,我相信這也是我的問題的根源。

  • 發佈這個所有我的問題RVM不是一個功能走了。如果它仍然不起作用,請在這裏給出一些錯誤追蹤。經過幾個小時的努力來解決這個問題,我相信我一定看過所有相關的錯誤。

希望它有幫助。乾杯!

+0

是的,先生。這對我有效。沒有理解最重要的點部分,但它工作。 – Ricbermo 2014-01-12 15:40:39

+0

當您嘗試安裝RVM時,如果您具有'export PATH =「/ usr/bin:」',它會發出警告。它會要求你在它後面追加'$ PATH'。這是我的一個問題的原因。因此,每個'export PATH'應該附加'$ PATH',以便在導出之前,無論PATH變量被追加。無論如何,這很有幫助。 – 2014-01-15 08:56:35

8

我在新鮮的rvm安裝上也遇到了這個問題,而且這裏的答案都不是固定的。進入官方網站RVM,對基礎知識部分,他們有這樣的命令:

# from http://rvm.io/rvm/basics

source $(rvm 1.9.3 do rvm env --path)

你應該改變1.9.3對於你真正想要的紅寶石版本,它會讓RVM無論功能外殼類型。

27

我也遇到過這個問題。最後我在終端上執行了這一行。

source ~/.rvm/scripts/rvm 

問題已修復。因爲這一行將使RVM實例在特定時間內成爲函數。

+2

最簡單的答案。只需將該行放入你的〜/ .bashrc中,你就可以使用任何終端模擬器。 – Nikkolasg 2015-08-21 10:36:51

+0

嗨 - 雖然這個命令'固定'了我參加的術語會話,但結果並不是_sticky_,也沒有幫助新的(或其他)術語會話。而且桌面似乎也不瞭解這些變化。我也是「反」登錄的東西,因爲它是每個會話/登錄的基礎。就我個人而言,我希望能夠將相同的程序與不同的Ruby-s和版本進行比較。 – will 2015-10-07 11:50:49

+0

你是真正的mvp。除非我嘗試過,否則沒有其他工作。我不在乎這是否是暫時的,我只需要修復。 – 2015-10-22 16:48:29

4

運行bash --login,然後運行rvm use 2.0.0

0

我有同樣的問題,我做了這個在我的.bash_profile,它的工作。 source "$HOME/.rvm/scripts/rvm"

0

對於那些誰配有同樣的問題,我跟着這個link他們使用lubuntu我一樣:

您與

lxterminal -e "bash -il"

謝謝啓動終端@mpapsis誰向我指出了正確的方向

+0

由於鏈接有時是暫時的,因此在答案中爲後人貼上一個小小的摘要可能是一個好主意。 – 2017-01-17 16:05:59

0

我固定它通過加入這一行對.bash_profile:

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