Ruby

您如何指定替代腳本解釋器(shebangs)?

  • August 15, 2012

在執行檔中,您使用 shebang 指定環境:

#!/usr/bin/env ruby

# ruby code here

但是,如果您想指定多個可能的環境怎麼辦?例如,如果您安裝了多個版本的 Ruby,您可能想要執行類似的操作

#!/path/to/better/ruby/version
#!/path/to/alternative/ruby/version

# ruby code here

如何為單個執行檔指定多個可能的環境?

簡短的回答是你不能。

#!/usr/bin/env ruby使用而不是簡單地背後的想法#!/usr/bin/ruby是使用使用者路徑中首先出現的任何 ruby​​ 二進製文件。那麼你的腳本不依賴於每個系統上的 ruby​​ 都在同一個地方;畢竟,“正常”的紅寶石位置可能是/usr/bin/ruby, /usr/local/bin/ruby, /opt/ruby-1.8.7/bin/ruby, 等等…

如果您確實想要硬編碼一些值或執行一些搜尋邏輯,您總是可以製作一個包裝器 shell 腳本:

#!/bin/sh

for ruby in /usr/bin/ruby /usr/local/bin/ruby
do
   if [ -x "$ruby" ]
   then
       "$ruby" myscript.rb
       break
   fi
done

如果你有足夠的動力,你甚至可以在 shell 腳本中嵌入一個 ruby​​(或其他)腳本。

引用自:https://unix.stackexchange.com/questions/45534