bash
読み:バッシュ
外語:bash: Bourne Again Shell
Brian Fox作元祖
シェル
(
sh
)の拡張版シェル。
目次
情報
概要
特徴
コマンド履歴
機能
組み込みコマンド
ナルコマンド (:)
ドットコマンド (.)
補足
#!/bin/shは間違い
バグ
情報
使用途 ‐
シェル
開発者 ‐ Brian Fox(初期)、Chet Ramey(現在)
最新版 ‐ 4.3
影響関係
被影響 ‐
sh
、
csh
、
tcsh
加影響 ‐ tcsh
主要動作環境 ‐ 各種
ライセンス
‐
GPL
概要
元祖シェル(Bourne Shell)に
コマンドライン
編集機能を追加したもので、
GPL
で配布されている。
GNU
プロジェクトの標準シェルになっているが、サイズが大きくまた若干遅いとされる。但し昨今の(高速な)コンピューターでは気にするほどのものではない。
特徴
コマンド履歴
コマンド履歴の機能があり、端末を閉じた際に、~/.bash_history ファイルに自動保存される。
ただし毎回上書き保存するため、複数の端末を開いていた場合、最後に閉じた端末の履歴しか保持されない。
機能
bashは比較的豊富な機能を持っている。
組み込みコマンドも豊富に用意され、このためシェルスクリプトもshより多機能である。
組み込みコマンド
ナルコマンド (:)
何もしない機能。
空ファイルを作成する
: > file
whileの条件式を : にすると
無限ループ
となる
while :
do
…
done
ドットコマンド (.)
新プロセスを作らず、現行のシェルで、ファイルを読み込みスクリプトを実行する。
例えば、ホームディレクトリーにある .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)年には、セキュリティまわりで重大な不具合が発見され、大きな騒動となった。
CVE-2014-6271
通称「Shellshock」
CVE-2014-6277
CVE-2014-6278
CVE-2014-7169
CVE-2014-718x
再検索