入門編:Bashの概要とシェル環境
Bash の基本概念、シェルの役割と実行モード、初期化ファイルの読み込み順序、および実行環境の確認方法を解説します。
Bashとは何か
Bash(Bourne Again Shell)は、GNU プロジェクトによって開発されたオープンソースのコマンドラインシェルおよびスクリプト言語です。1979 年に開発された Unix の標準シェル「Bourne Shell(sh)」の後継として誕生し、POSIX 標準との互換性を保ちながら強力な拡張機能を備えています。
Linux ディストリビューション(Ubuntu、Debian、RHEL 等)の多くで既定のログインシェルとして採用されているほか、WSL(Windows Subsystem for Linux)や macOS、コンテナ環境(Docker)など、現代のインフラ管理や開発運用において世界中で最も広く利用されています。
シェルは、OS の中核である「カーネル」とユーザーの間に立ち、入力されたコマンドを解釈してプログラムを実行するコマンドインタープリタとしての役割を果たします。同時に、複数のコマンドを組み合わせて処理を自動化するプログラミング言語でもあります。
シェルの実行モード
Bash は動作する状況に応じて複数の実行モードが存在します。
» ログインシェルと非ログインシェル
ユーザーが SSH 接続やコンソール画面から ID とパスワードを入力して認証した際に起動するシェルを「ログインシェル」と呼びます。
一方、グラフィカル環境のターミナルウィンドウを新しく開いたときや、シェル内から別のシェルを起動したときは「非ログインシェル」として動作します。
» 対話的シェルと非対話的シェル
ユーザーがキーボードから直接コマンドを入力し、プロンプトとやり取りするモードを「対話的(インタラクティブ)シェル」と呼びます。
シェルスクリプトファイルを実行する際のように、事前に記述されたコマンド群を自動で順次実行するモードを「非対話的シェル」と呼びます。
設定ファイル(初期化スクリプト)の読み込み順序
Bash の起動時には、モードに応じて特定の設定ファイルが順番に読み込まれます。
» ログインシェルの場合
/etc/profile(システム全体の共通設定)~/.bash_profile、~/.bash_login、~/.profileの中から 最初に見つかった1つだけ を読み込む- ログアウト時には
~/.bash_logoutを実行
一般的には ~/.bash_profile の中で ~/.bashrc を呼び出すように記述し、設定の重複を防ぎます。
» 対話的非ログインシェルの場合
/etc/bash.bashrc(システム全体の設定)~/.bashrc(ユーザー個別の環境設定)
エイリアスやプロンプト設定(PS1)、日常的に使う関数は ~/.bashrc に記述するのが標準的な運用です。
バージョンの確認と環境整備
システムにインストールされている Bash のバージョンを確認します。
# バージョン情報の表示
bash --version
# 組み込み変数によるバージョン確認
echo "$BASH_VERSION"
macOS ではライセンス上の理由から、OS 標準の Bash が古いバージョン(3.2 系)に留められています。最新の連想配列機能やパフォーマンス改善(Bash 4.0 / 5.0 以降の機能)を利用したい場合は、Homebrew などのパッケージマネージャー経由で最新版をインストールして使用します。
# macOS での Homebrew による導入例
brew install bash