手始めに、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>
最近の移植性のために使用する方がおそらく良いでしょう。