bash

読み:バッシュ
外語:bash: Bourne Again Shell 英語
品詞:固有名詞

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

目次

  • 使用途 ‐ シェル
  • 開発者 ‐ Brian Fox(初期)、Chet Ramey(現在)
  • 最新版 ‐ 4.3
  • 影響関係
    • 被影響 ‐ shcshtcsh
    • 加影響 ‐ 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

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club