履歴を保存せずに端末を閉じる方法は?

履歴を保存せずに端末を閉じる方法は?

1回以上誤っていくつかのコマンドを実行してbashの履歴を汚染しました。 bashの履歴を保存せずに端末を閉じる方法は?私はFedoraを使用しています。

ベストアンサー1

これを達成する方法はいくつかあります。

注:このオプションはいいえ相互に排他的であり、任意の組み合わせで同時に使用できます。

オプション0

HISTFILEシェル変数を削除します。

unset HISTFILE

HISTFILEマニュアルページによれば、設定を解除した後に設定されているかどうかに関係なく、ファイルに自動的に記録を記録するシェルの機能が削除されます。

オプション1

厄介な履歴ファイルを扱うときに完璧主義者であれば、記録したくないHISTIGNOREコマンドセットを含むように変数を変更するだけです。たとえば、thenHISTIGNORE='ls*:cd*'~/.bashrcthenのインスタンスを追加すると、履歴ファイルに挿入されませんlscd

この変数はextglob開くと次のようになります。

shopt -s extglob
# With `extglob` on I can use extended globs to ignore all:
# cd ..
# cd ../
# cd ..//
# cd ../..
# cd ../../
# cd ../..//
# etc.
HISTIGNORE='cd +(..|../)*(/)'

cd ..などcd ../は無視しますcd ../..が、そのまま維持されますcd myfolder

glob 拡張の詳細については、以下で確認できます。バッシュのマニュアルページ

オプション2

コマンドごとに履歴から削除されるコマンドを制御するには、スペースHISTCONTROL='ignorespace'で始まるコマンドラインを省略するコマンドを設定できます。を使用すると、重複したignoreboth行も省略されます。その後、コマンドを入力する前にスペースバーを押すと、そのコマンドは履歴ファイルに表示されません。

# With HISTCONTROL=ignorespace (or =ignoreboth) this line gets written to history
$ mycommand
# But this line does not
$  mycommand

オプション3

ターミナルを閉じた直後にシェルを終了したい場合は、trapターミナルプログラムがシェルにシグナルを送信し(xtermシグナルを送信してSIGHUPからシェルが終了するのを待つ)、記録を保存せずにシャットダウンすることができます。この信号が受信されました。次の項目に追加してください~/.bashrc

# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP

オプション4

一部の人はこれを「野蛮な」アプローチと考えるかもしれませんが、SIGKILLPIDをシェルに送信するとシェルはすぐに終了し、シェルはこれを実行できません。何もない信号のキャプチャ、記録の保存、実行、停止~/.bash_logoutしたタスクに関する警告、またはその他の良い内容のようなものです。

$$コマンドを実行するシェルプロセスのPIDに拡張)

kill -9 $$

おすすめ記事