2011-03-04 86 views

回答

4

這是做它的方式......

#!/usr/bin/env /usr/local/bin/[email protected] 
+0

嗯,我的系統中沒有任何符號鏈接的紅寶石在/ usr/local/bin – Kevin 2011-06-06 01:06:58

+0

也許它們只是在你的系統上的其他地方? – tcurdt 2012-02-03 09:16:17

5

tcurdt的職位是有點誤導。在我的系統上,我只是在系統上以root身份設置了rvm(ree,1.8.7,& 1.9.2 rubies)。我在/ usr/local/bin目錄是這樣的:

lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby 

我沒有一個所謂的寶石系統中tcurdt的例子。所以,我認爲適當的方式來實現你以後會像這樣:

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

什麼RVM的一些解釋在這裏做什麼:RVM包裝創建腳本(在/ usr /本地/ RVM /包裝/ *)其設置諸如GEM_PATH & GEM_HOME。這些都是需要的,以便寶石可以正確加載作爲特定版本的紅寶石的一部分。在執行rvm的系統安裝時,鏈接到這些包裝腳本的鏈接將創建在/usr/local/bin之下。如果你已經安裝了rvm,它們位於這裏:$HOME/.rvm/bin

將shebang行(#!/ ....)加上/usr/bin/env作爲前綴至關重要。如果你只是試着直接指向一個ruby(例如#!/ usr/local/bin/ruby​​-1.9.2-p180)就不夠了。這是因爲這些包裝實際上不是Ruby解釋,他們是在呼喚你的腳本作爲參數傳遞給Ruby解釋器的先期環境設置,像這樣的shell腳本:

source "/usr/local/rvm/environments/ruby-1.9.2-p180" 
exec ruby "[email protected]" 

[email protected]是你的shell腳本名稱被傳遞給ruby。

最後這裏是一個示例腳本,我放在一起,我在一個cgi-bin目錄中運行:

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

puts "Content-Type: text/html" 
puts 
puts "<html>" 
puts "<body>" 
puts "<h1>Hello Ruby!</h1>" 
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>" 
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>" 
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>" 
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>" 
puts "</body>" 
puts "</html>" 
+0

雖然你非常詳細,這不是問題的正確答案。 我不想只選擇一個特定的紅寶石版本,但也是寶石!幸運的是,rvm不僅爲Ruby版本創建封裝腳本,還創建了gemsets。當然,如果你沒有一個「系統」gemset,試圖選擇它沒有意義;) 順便說一句:只需選擇紅寶石版本,你也可以使用rvm-shell – tcurdt 2011-03-26 07:00:43

+0

沒有注意到rvm-shell。所以可以使用: #!/ usr/bin/env/usr/local/bin/rvm-shell? 你最終會選擇哪個ruby&gemset? – slm 2011-03-28 17:41:11

5

#!/usr/bin/env rvm [email protected] do ruby

+0

這似乎是最簡單的方法來完成此操作。 – 2013-09-20 14:55:50

+0

這不適合我。 RVM 1.26.11,Ubuntu 15.04 – 2015-08-26 20:22:35