このサイトの推奨事項(推奨されるBashシバンは何ですか?)を含め、いくつかの場所で、#!/usr/bin/env bash
に優先して使用するのを見てきました#!/bin/bash
。私は、1人の進取的な個人が使用#!/bin/bash
が間違っていて、そうすることによってbash機能が失われることを示唆するのを見たことさえあります。
そうは言っても、私は厳しく管理されたテスト環境でbashを使用します。この環境では、循環しているすべてのドライブが基本的に単一のマスタードライブのクローンです。私の場合は必ずしも適用可能ではありませんが、私は移植性の議論を理解しています。他のものよりも好む他の理由はありますか#!/usr/bin/env bash
、そして、移植性が懸念であると仮定して、それを使用することは機能性を壊すことができる理由がありますか?
env
に位置していない可能性があります/usr/bin
。シバンコメントは完全に悪い考えです私見。デフォルトのスクリプトインタープリターがシバンコメントを処理しない場合、それは単なるコメントです。ただし、スクリプトインタープリターがシバンコメントを処理できることがわかっていて、bashへのパスがわかっている場合は、パスが長すぎる(可能性が低い)か、スクリプトを移植する可能性がない限り、絶対パスを使用して呼び出さない理由はありません。 / binにbashがないシステムに。繰り返しになりますが、この場合、移植性が関係するため、前述の警告が適用されます。
/etc
またはのようなものが存在する必要があり/bin/sh
ます。bash
ほとんどのUnixライクなシステム用のアドオンです。Linuxだけがbash
存在することが保証されており、/bin
おそらくとしてもリンクされてい/bin/sh
ます。Linuxが多くの人々にとって現代の事実上のUnixになって以来、Linux以外のシステムが存在する可能性があるという事実は忘れられてきました。以下の私自身の回答では、あなたが言っbash
たのでLinuxを想定しました。私が使用したBSDボックスの多くは、インストールされていませんでした。
/bin/bash
。Bashはデフォルトではインストールされません。あなたがそれを望むなら、あなたはしなければなりませんpkg install bash
。インストールすると、に配置され/usr/local/bin/bash
ます。/bin/bash
OpenBSDには何もインストールされていません。#!/bin/bash
意志のシバンは誤り、そして#!/usr/bin/env bash
成功するでしょう。