1回以上誤っていくつかのコマンドを実行してbashの履歴を汚染しました。 bashの履歴を保存せずに端末を閉じる方法は?私はFedoraを使用しています。
ベストアンサー1
これを達成する方法はいくつかあります。
注:このオプションはいいえ相互に排他的であり、任意の組み合わせで同時に使用できます。
オプション0
HISTFILE
シェル変数を削除します。
unset HISTFILE
HISTFILE
マニュアルページによれば、設定を解除した後に設定されているかどうかに関係なく、ファイルに自動的に記録を記録するシェルの機能が削除されます。
オプション1
厄介な履歴ファイルを扱うときに完璧主義者であれば、記録したくないHISTIGNORE
コマンドセットを含むように変数を変更するだけです。たとえば、thenHISTIGNORE='ls*:cd*'
に~/.bashrc
thenのインスタンスを追加すると、履歴ファイルに挿入されませんls
。cd
この変数は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
一部の人はこれを「野蛮な」アプローチと考えるかもしれませんが、SIGKILL
PIDをシェルに送信するとシェルはすぐに終了し、シェルはこれを実行できません。何もない信号のキャプチャ、記録の保存、実行、停止~/.bash_logout
したタスクに関する警告、またはその他の良い内容のようなものです。
($$
コマンドを実行するシェルプロセスのPIDに拡張)
kill -9 $$