1. トップ
  2. 新着ニュース
  3. IT
  4. パソコン

Windows Subsystem for Linuxガイド 第40回 Bashのヒストリ機能 その2「設定編」

マイナビニュース / 2024年10月16日 17時56分

子プロセスで実行するシェルでもログインシェルと同様のヒストリ機能を使いたい場合、環境変数として定義し、ログイン時に一回だけ実行される「~/.profile」、「~/.bashprofile」、「~/.bashlogin」のどれかを使う。Linuxディストリビューションにより違いがある。

「~/.bashrc」は、bashが起動するときに毎回読み込まれるため、ここで設定すると、親プロセスの状態に関わりなく、毎回同じ設定値が維持されてしまう。

環境変数を使うなら、ログイン時に1回だけ実行される「~/.profile」などに記述する。このようにすることで、たとえば親プロセスで手動で環境変数を変更した場合、それが子プロセスにも継承される。

環境変数として定義する場合、exportコマンドを使い

export <変数名>=<値>

とし、環境変数、シェル変数を消去する場合には、

unset <変数名>

とする。

ヒストリ機能のシェル変数である「HISTTIMEFORMAT」を設定すると、履歴リストファイルに日時が記録されるようになる。設定には「%F %T 」の様な日時の書式パターンを指定する。このとき、履歴リストファイルはコマンドと日時が2行で記録されるため、HISTFILESIZEで指定された行数の半分のイベントしか記録できなくなる。
シェルオプションによるヒストリ機能の設定

シェルオプションは、shoptコマンドを使い、以下の構文で有効化する。

shopt -s <シェルオプション名>

解除するには、

shopt -u <シェルオプション名>

とする。

シェルオプションは、デフォルトでは、すべて解除(無効)に設定されている。(表04)にヒストリ機能関連のシェルオプションを示す。

このうち、ヒストリ機能の動作に大きく関係するのが「histreedit」と「histverify」だ。前者は、ヒストリ置換が失敗した場合にコマンドラインを編集状態にする。たとえば、「!xyz」としてxyzで始まるコマンドを使ったイベントを参照しようとして、履歴リストに該当するものがなかったとき、コマンドラインは再度編集状態となる。

これに対して「histverify」は、ヒストリ置換の結果を即座に実行せず、置換したコマンドラインを一回、編集状態にする。コマンドラインを編集したあとEnterキーで実行できる。

どちらも結果を見てから実行できるため、ヒストリ置換に慣れない段階では設定しておくと実行前に確認できるので安心感がある。

この記事に関連するニュース

トピックスRSS

ランキング

複数ページをまたぐ記事です

記事の最終ページでミッション達成してください