以前を実行できませんでした。私のscript console
ファイルには#!/usr/bin/env ruby19
が含まれていたので、以前はエラーが発生していました。ヒットとトライアルをした後、#!/usr/bin/env ruby19
を#!/usr/bin/env ruby
に置き換えてこのエラーを修正しました。Ruby on Railsスクリプトコンソール
上記の行は何をしますか?
バージョン:
- ルビー:1.9.2-P180
- Ruby on Railsの:2.3.5
以前を実行できませんでした。私のscript console
ファイルには#!/usr/bin/env ruby19
が含まれていたので、以前はエラーが発生していました。ヒットとトライアルをした後、#!/usr/bin/env ruby19
を#!/usr/bin/env ruby
に置き換えてこのエラーを修正しました。Ruby on Railsスクリプトコンソール
上記の行は何をしますか?
バージョン:
#!
(ハッシュバン)テキストファイルの最初の行の指示ほとんどの* nixシステムのプログラムローダーは、次に指定されたプログラム(この場合は/usr/bin/env
)と任意のパラメータ(この場合はruby
)を呼び出します。
/usr/bin/env
は、最初の引数で指定されたプログラムの環境を見ているポータブルな方法です。ここはRubyインタプリタです。 RubyインタプリタがあなたのPATHにある場合、envはそれを見つけて残りのファイルを入力として使用して実行します。
おそらく、あなたのPATHにruby19
という名前のプログラムがないので、エラーが発生します。あなたはruby
という名前のプログラムを持っているので、動作します。
Unixのスクリプトでシェバングラインは完全なパスを指定することになっているので、この:
#!/usr/local/bin/ruby
は有効ですが、これではありません。
#!ruby
最初の形式に問題がされますフルパスを使用する必要がありますが、実際のパスはすべてのシステムで同じではありません。 env
ユーティリティは、スクリプトがenv
が常に完全なパスとして使用できるように常に/usr/bin/env
にあるように、スクリプトが適切なインタプリタの環境変数PATH
を検索できるようにします。env
は、名前付きインタプリタを検索します。 fine manualから
:
env [-i] [name=value]... [utility [argument...]]
その後、修正環境とユーティリティオペランドで指定されたユーティリティを起動し、その引数に応じて変更し、現在の環境を得なければならないのenvユーティリティ。
あなたのケースではそれほど役に立ちませんが、とにかくそれを含めるべきだと思いました。 env
のシバン使用は、意図された動作を使用しないビットハックです(env
)。
質問 - #/ usr/bin/env rubyがどのように動作するのですか? – a5his