bash
読み:バッシュ
外語:bash: Bourne Again Shell

 Brian Fox作元祖シェル(sh)の拡張版シェル。
目次

情報

概要
 元祖シェル(Bourne Shell)にコマンドライン編集機能を追加したもので、GPLで配布されている。
 GNUプロジェクトの標準シェルになっているが、サイズが大きくまた若干遅いとされる。但し昨今の(高速な)コンピューターでは気にするほどのものではない。

特徴

コマンド履歴
 コマンド履歴の機能があり、端末を閉じた際に、~/.bash_history ファイルに自動保存される。
 ただし毎回上書き保存するため、複数の端末を開いていた場合、最後に閉じた端末の履歴しか保持されない。

機能
 bashは比較的豊富な機能を持っている。
 組み込みコマンドも豊富に用意され、このためシェルスクリプトもshより多機能である。

組み込みコマンド

ナルコマンド (:)
 何もしない機能。

ドットコマンド (.)
 新プロセスを作らず、現行のシェルで、ファイルを読み込みスクリプトを実行する。
 例えば、ホームディレクトリーにある .bashrc を実行するには次のようにする。
 . ~/.bashrc

補足

#!/bin/shは間違い
 Linuxの場合、/bin/sh は実体がなく、殆どのディストリビューションでは /bin/bash へのシンボリックリンクである。これは、古いシェルスクリプトを動作させるための互換性のために存在する。
 Linuxで使われているbashは古いshと比べて多機能であるため、bashの機能を用いて作られたbashスクリプトは、古いshでは動作しない。
 またDebianやUbuntuのように、標準シェルがdash(bashとは異なるash系のシェル)の場合、/bin/sh は /bin/bash へのシンボリックリンクとなるため、正常に動作せず誤作動を起こしてしまう。
 「#!/bin/bash」と書いてあれば、DebianやUbuntuでもbashを入れてあれば正常動作する。
 つまり、shでも動作するものなら /bin/sh でもよいが、bashでしか動作しないならbashのフルパスを直接書かねばならないということである。/bin/sh が bash である環境の場合、/bin/sh でも一見動作するが、それは極言すれば単に偶然である。

バグ
 多機能だけに、バグも多い。ほぼ全てのLinuxで使われており、稼働台数が多いことから、大きなバグを出すと影響範囲が広くなる。
 2014(平成26)年には、セキュリティまわりで重大な不具合が発見され、大きな騒動となった。

再検索