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バージョンを使用してスクリプトを実行できます。