このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux:bashの設定:bashのオプション

 Linux環境での作業を効率化し、自分好みのシェル環境を構築するためには、bashのオプションを理解し、適切に設定することが重要です。bashは強力なシェルであり、多くの機能を持っていますが、その一部はデフォルトでは無効になっています。これらの機能を有効化することで、作業効率や安全性を向上させることができます。

 ここでは、bashのオプション設定方法について詳しく解説します。具体的には、setコマンドとshoptコマンドを使用して、bashのさまざまな機能をオン・オフする方法を学びます。また、よく使用されるオプションを一覧表で紹介し、実際の使用例を示します。

 これらの知識を習得することで、シェルの動作を自分のニーズに合わせてカスタマイズし、快適な作業環境を整えることができます。

bashのオプション

 bashでは、シェル自身が持つさまざまな機能をオプションとして提供しています。これらのオプションは、「オン(有効)」または「オフ(無効)」の状態を持ち、ユーザーが自由に切り替えることができます。

オプションを設定することで、以下のような効果を得られます。

  • 安全性の向上:誤操作によるシェルの終了を防ぐ。
  • 利便性の向上:コマンド入力のミスを自動修正する。
  • 動作のカスタマイズ:シェルの挙動を細かく制御できる。

オプションの設定には、主に以下の2つのコマンドを使用します。

  • setコマンド
  • shoptコマンド

これらのコマンドを使って、bashの各種オプションをオン・オフする方法を見ていきましょう。

setコマンドによるオプション設定

 setコマンドは、bashのオプションを設定・解除するためのコマンドです。setコマンドでは、-o+oを使用して、オプションのオン・オフを切り替えます。

【書式】
set -o オプション名 # オプションをオンにする
set +o オプション名 # オプションをオフにする

  • -o:指定したオプションをオン(有効)にします。
  • +o:指定したオプションをオフ(無効)にします。

注意+oでオプションをオフにする点に注意してください。「+」プラスからイメージされる内容とは異なります。

例:ignoreeofオプションの設定

 ignoreeofオプションは、Ctrl + Dキーによるシェルの終了を無効にするものです。誤ってCtrl + Dを押してしまっても、シェルが終了しなくなります。

オプションをオンにする

user01@ubuntu:~$ set -o ignoreeof

動作確認

Ctrl + Dを入力してもシェルが終了せず、メッセージが表示されます。

user01@ubuntu:~$ # ここで Ctrl + D を入力
シェルから脱出するには "exit" を使用してください。

主なsetコマンドのオプション一覧

オプション名内容
ignoreeofCtrl + Dを押してもシェルを終了しない。
noclobberリダイレクトで既存のファイルを上書きしない(上書き防止)
noglobパス名展開を無効にする(*?をそのまま文字列として扱う)
allexport定義した変数を自動的に環境変数としてエクスポートする。
monitorジョブ制御を有効にする(バックグラウンドジョブの管理)
errexitコマンドがエラーを返した場合、シェルスクリプトの実行を停止する。
nounset未定義の変数を参照した場合、エラーを発生させる。
主なsetコマンドのオプション一覧

shoptコマンドによるオプション設定

 shoptコマンドは、bashの拡張オプションを設定・解除するためのコマンドです。setコマンドと似ていますが、shoptでしか設定できないオプションも存在します。

【書式】
shopt -s オプション名 # オプションをオンにする(set)
shopt -u オプション名 # オプションをオフにする(unset)

  • -s:指定したオプションをオン(有効)にします。
  • -u:指定したオプションをオフ(無効)にします。

例:cdspellオプションの設定

 cdspellオプションは、cdコマンドでのディレクトリ名のタイプミスを自動修正してくれる機能です。

オプションをオンにする

user01@ubuntu:~$ shopt -s cdspell # cdコマンドの自動修正をオン

動作確認

user01@ubuntu:~$ ls -F
snap/  ダウンロード/  デスクトップ/  ビデオ/    ミュージック/
work/  テンプレート/  ドキュメント/  ピクチャ/  公開/

user01@ubuntu:~$ cd workk # workと間違えてworkkと打ってしまった
work# 自動修正されて「work」とみなされる

user01@ubuntu:~/work$ pwd
/home/user01/work # タイプミスした部分が修正されて正しく移動できている

 cd workkとタイプミスしていますが、自動的にworkに修正され、ディレクトリ移動が成功しています。

主なshoptコマンドのオプション一覧

オプション名内容
cdspellcdコマンドでのディレクトリ名のタイプミスを自動修正する。
dotglobワイルドカードによるパス名展開で、ドットで始まるファイル(隠しファイル)も対象に含める。
globstar**を使用したワイルドカードを有効にし、サブディレクトリを含むすべてのファイルにマッチさせる。
histappendシェルを終了するとき、コマンド履歴を上書きせずに追記する。
checkwinsizeコマンド実行後にウィンドウサイズをチェックし、行数・列数の環境変数を更新する。
nocaseglobパス名展開で大文字・小文字を区別しない(ケースインセンシティブ)
extglob拡張パターンマッチングを有効にする(高度なパターン指定が可能)
主なshoptコマンドのオプション一覧

まとめ

  • bashのオプションを設定することで、シェルの動作をカスタマイズし、作業効率や安全性を向上させることができます。
  • setコマンドを使用して、オプションをオン(-o)・オフ(+o)できます。
  • 例:set -o ignoreeofで、Ctrl + Dによるシェル終了を防止。
  • shoptコマンドを使用して、拡張オプションをオン(-s)・オフ(-u)できます。
  • 例:shopt -s cdspellで、cdコマンドのタイプミスを自動修正。
  • オプションを適切に活用することで、シェル操作がより便利で快適になります。

 これらのオプション設定を活用して、自分にとって最適なシェル環境を構築しましょう。シェルの設定は一度行えば、日々の作業効率が大幅に向上します。ぜひ、さまざまなオプションを試して、自分だけの快適なシェル環境を作り上げてください。