[解決済み] usr/bin/envはどのような効果があるのでしょうか?
質問
とはどう違うのですか?
#! /usr/bin/env ruby
と
#! ruby
?
(の違いについて議論している他の多くの質問を見つけました。
#! /usr/bin/env ruby
と
#! /usr/bin/ruby
が、それは私の質問ではありません)。
どのように解決するのですか?
#! ruby
...は、UNIX系システムでの動作は保証されていません(そして はしません。 は全く動作しません。有効なシバングには 完全修飾された のパスが必要です。エディタにどのプログラミング言語を使っているかを伝えるには十分かもしれませんが、カーネルがそれを使ってプログラムを実行するインタープリタをうまく選択できるわけではありません。
カーネルの
execve
のような C 標準ライブラリのラッパーによって追加されます。
execlp
と
execvp
しかし、シェバングの解析はカーネルが直接行うので、Cライブラリの優劣はそこで発生しません。
#!/usr/bin/env ruby
...は、PATH を使って
ruby
を実行します。なぜなら
env
実行ファイルが完全に指定されているので、これは有効なシバング行です(どの
#! ruby
はありません)。
env
は他の目的もあります。例えば、走ることができます。
env -i someprog
を実行するために
someprog
を完全に空の環境で使用するか
env FOO=bar someprog
を実行します。
someprog
を環境変数
FOO
という値に設定します。
bar
(どの
FOO=bar someprog
はシェルを介して実行された場合にも行われますが
env
のアプローチは、シェルを介さない場合にも機能します)。
しかし、この文脈で関連するユースケースは、PATHルックアップを強制することです。
関連
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
エラー時の対処法「[: =: 単項演算子が期待される" というシェルスクリプトのエラーの解決法
-
linux awkコマンド詳細説明
-
[解決済み] シェルスクリプトで NULL 値と文字列を比較する際に単項演算子が期待される
-
[解決済み] Makefile で子プロセスの環境変数を設定する方法
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
-
[解決済み] bashスクリプトでset -eはどういう意味ですか?
-
[解決済み】なぜ #!/usr/bin/env bash は #!/bin/bash よりも優れているのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
シェルwhileループのエラー曖昧なリダイレクトとwhileループの変数割り当て失敗問題
-
シェル [: -eq: 単項演算子が期待される
-
[解決済み] ファイル中のある文字列が出現する行番号を表示するには?
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] ディレクトリが存在しない場合のみmkdirする方法は?
-
[解決済み】シェルエイリアスにコマンドライン引数を渡すには?重複
-
[解決済み】シェルスクリプトの終了時にバックグラウンドプロセスやジョブを強制終了するにはどうすればいいですか?
-
[解決済み】シェルスクリプトでファイルが存在するかどうかを確認する方法
-
[解決済み] wc -l "でファイル名を表示せずに行数だけを表示させるには?
-
[解決済み] なぜシェルスクリプトではなくmakeを使うのか?