このサイトの推奨事項(推奨される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/bashOpenBSDには何もインストールされていません。#!/bin/bash意志のシバンは誤り、そして#!/usr/bin/env bash成功するでしょう。