手始めに、Bashがプリインストールされていると仮定できる場合(リストのすべてのシステムで私の知る限り)、以下のhashbangを使用して互換性を確保します。
#!/usr/bin/env bash
何これは呼び出すbashに関係なく、それは中のかどうか、設定する起こりません/binか/usr/local/bin。
広範囲にわたるほとんどのシステム(AIX、Solaris、いくつかのBSDフレーバーを含む)ではbash、異なる場所に配置され、env常にに配置されました/usr/bin/env。ただし、このトリックは私のものではなく、Bash Cookbookの著者によるものです。
とにかく、はいBashはあなたの生活を楽にするいくつかの「近代的な」機能を使用できるようにします。
たとえば、二重括弧:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
一方、従来のシェル方言では、次のことに頼らなければなりません。
test -f "/etc/debian_version" && echo "This is a Debian flavor"
しかし、二重括弧についての最良の点は、マッチングのために正規表現を許可することです。バッシュハッカーウィキはその方向にあなたに多くのトリックを与えるだろう。
構文$((2**10))とインラインで、または他の算術式のような非常に便利な式を使用することもでき$((expression))ます。
少し時代遅れではありますが、サブシェルにバックティックを使用するのは問題ありません。ただし、$(command ...)呼び出しのネスト機能は、さまざまなサブシェルレベルで多くのことをエスケープする必要がないため、はるかに便利です。
これらは、Bashが従来の一般的なPOSIX sh構文に対して提供するもののほんの一部です。
ただし、シェルだけでなく(スクリプトだけでなく)シェルの機能を強化したい場合は、もご覧くださいzsh。
/binと/usr/bin。その結果、#!/usr/bin/env <shname>最近の移植性のために使用する方がおそらく良いでしょう。