bash を使おう!① : bash について

  1. なぜ「bash」なのか?

    試しにターミナルを開き「ls -l $(which sh)」と入力してみて下さい。
    以下のように表示されたのではないでしょうか?


    そう、既に「sh」コマンドは存在しなく、「bash」の互換モードで動作しているからです。

    これはシェルスクリプトに於ても同様で、ワザワザ「sh」を使う理由に乏しいとも言えるからです。

  2. bash は sh や csh の後継なので、既に存在するスクリプトの移行も簡単

    bash は sh ( bone shell ) の後継であり、それに ksh や csh の機能を取り込んだモノです。

    従って、文法的には sh の後方互換とも言えますので、スクリプトの1行目を次の様に変更すると、殆どの場合で問題なく動作します。

    前:
    #!/bin/sh

    後:
    #!/bin/bsh
     
  3. 様々な制御文

    bash は if 、case 、select、for 、while 、until などの制御文や、 function による関数宣言も行えるなど、プログラミングに必要な機能は、殆ど有しています。

  4. 算術式評価

    bash は以下のような算術式評価があります。

    • id++ id–
      変数を評価し、その後 increment (加算)/ decrement (減算) する。
    • ++id –id
      変数を increment (加算) / decrement (減算) してから評価する。
    • – +
      単項式の負と正
    • ! ~
      論理的否定とビット単位の否定
    • **
      指数 (累乗)
    • * / %
      乗算、除算、剰余
    • + –
      加算と減算
    • << >>
      左ビットシフトと右ビットシフト
    • <= >= < >
      比較
    • == !=
      等値と非等値
    • &
      ビット単位の AND
    • ^
      ビット単位の排他的 OR
    • |
      ビット単位の OR
    • &&
      論理的 AND
    • ||
      論理的 OR
    • expr?expr:expr
      条件付き実行(三項演算子)
    • = *= /= %= += -= <<= >>= &= ^= |=
      代入
    • expr1 , expr2
      コンマ

  5. sh が使える環境では、ほぼ全ての環境でデフォルトでインストールされています。

    UNIX、Linux、MacOSX など、殆どの環境で利用可能です。

  6. sh スクリプトは読み辛い

    sh スクリプトは多くの環境で動作するが、非常に古いために読み辛い。(メンテナンスの問題がある)
    bash も同様に多くの環境で動作するため、sh に拘る必要性が無い。

  7. man コマンドで詳しいマニュアルがインストールされている

    ターミナルから、「man bash」と入力して下さい。
    多くの環境では、日本語化された詳しいマニュアルが参照できるハズです。

以上の理由から、現在では bash に優先して sh を利用する必要性はありません。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です