代替スクリプトインタプリタ(shebang)を指定するには?

代替スクリプトインタプリタ(shebang)を指定するには?

実行可能ファイル内で shebang を使用して環境を指定できます。

#!/usr/bin/env ruby

# ruby code here

しかし、できるだけ多くの環境を指定するにはどうすればよいですか?たとえば、複数のバージョンのRubyがインストールされている場合は、次のことができます。

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

# ruby code here

単一の実行可能ファイルに対して可能な複数の環境を指定する方法は?

ベストアンサー1

短い答えはできないということです。

#!/usr/bin/env ruby単純な代わりに使用の基本的なアイデア#!/usr/bin/rubyは、ユーザーパスで最初のRubyバイナリを使用することです。さて、あなたのスクリプトは、Rubyがすべてのシステムで同じ場所にあることには依存しません。結局、「一般的な」ルビーの位置は、、、、/usr/bin/rubyなどになることができます。/usr/local/bin/ruby/opt/ruby-1.8.7/bin/ruby

いくつかの値をハードコーディングしたり、いくつかの検索ロジックを実行したい場合は、いつでもラッパーシェルスクリプトを作成できます。

#!/bin/sh

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

動機が十分であればできます。Ruby(またはその他)スクリプトの挿入シェルスクリプトの内部。

おすすめ記事