これら2つのbash環境の違いは何ですか?

これら2つのbash環境の違いは何ですか?

bash私はスクリプトの場合、一部の人々は別のスクリプトを使用していることがわかりました。シェルボーン自分の上に乗せるのに慣れている人に。

誰かがこの2つの違いを単純化できますか?私は#!/bin/bash常にこれを使用します。

#!/bin/bash
#!/usr/bin/env bash

答え1

スクリプトの結果#!/usr/bin/env bashはで最初に使用されます$PATH

bashは通常位置していますが、/bin/bash場合によってはそうではありません(他のオペレーティングシステム)。別の潜在的な用途は、複数のbashシェルがインストールされている場合です(たとえば、代替場所に最新バージョン/usr/local/bin/bash)。

#!/usr/bin/env bash使いやすさを活用することをすることですenv
このenvユーティリティは通常、プログラムが呼び出されたときに環境を操作するために使用されます(たとえば、env -i someprog環境をきれいに消去するなど)。ただし、実行するプログラム以外の引数を指定しないと、図のように指定されたプログラムが実行されます$PATH


これには長所と短所の両方があります。

利点前述のように、bashが別の場所にインストールされている場合、またはbashがスクリプトが実行しようとしている操作をサポートするのに古すぎる場合は、/bin/bashスクリプトを移植可能にします。

欠点は、予測不能な動作が発生する可能性があることです。ユーザーの意思決定に依存しているため、これはスクリプトが$PATH期待するものとは異なる動作をするbashバージョンを使用してスクリプトを実行できます。

関連情報