シェル上で実行したコマンドをヒストリに残したくない場合(悪用厳禁)

2021-10-12Bash

はじめに

ユーザ名とパスワードを引数で受け取りLinuxユーザを作成するスクリプト | ゲンゾウ用ポストイット でも書きましたが、
シェルのヒストリ(コマンド実行履歴)についつい残してはいけない情報を残してしまうことがあります。
( ex: mysql -pxxxx mysql みたいなパスワード情報をついつい貼り付けてしまったり )

一時的に残らないようにして作業することもできますので、その方法を紹介します。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

コマンドをヒストリに残さないようにする

すべてのコマンドをヒストリに残さないようにするには、 HISTIGNORE 環境変数にワイルドカードを設定してやります。

その後、 HISTIGNORE 環境変数を触った履歴を history -d で削除します。

# これ以降、すべてのコマンドをヒストリに残さないようにする
$ HISTIGNORE="*"
# 直前に実行した `HISTIGNORE="*"` だけは残ってしまうため、ヒストリの最終履歴を1つ削除
$ history -d $(history | sed -n 's/^\s\+//; s/\s\+.*$//; $p')

コマンドをヒストリに残すようにする

HISTIGNORE を解除してやればもとに戻ります。
HISTIGNORE にもともと値が設定されている場合には注意が必要です。 )

$ unset HISTIGNORE

ひとこと

自分がどんな操作をしたのかを追えますし、シェルのヒストリは非常に便利です。
しかし、 どうしてもリスクを犯してでも進まないといけない場合 にお使いください。

2021-10-12Bash