我想指定在我的ruby腳本的標題內使用哪個ruby解釋器和哪個gemset。東西沿線在腳本標題中選擇rvm gemset
#!/usr/bin/env source /usr/local/lib/rvm && rvm [email protected]
會很好。
任何有關如何做到這一點的建議?
我想指定在我的ruby腳本的標題內使用哪個ruby解釋器和哪個gemset。東西沿線在腳本標題中選擇rvm gemset
#!/usr/bin/env source /usr/local/lib/rvm && rvm [email protected]
會很好。
任何有關如何做到這一點的建議?
這是做它的方式......
#!/usr/bin/env /usr/local/bin/[email protected]
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>"
#!/usr/bin/env rvm [email protected] do ruby
這似乎是最簡單的方法來完成此操作。 – 2013-09-20 14:55:50
這不適合我。 RVM 1.26.11,Ubuntu 15.04 – 2015-08-26 20:22:35
嗯,我的系統中沒有任何符號鏈接的紅寶石在/ usr/local/bin – Kevin 2011-06-06 01:06:58
也許它們只是在你的系統上的其他地方? – tcurdt 2012-02-03 09:16:17