2012-01-27 18 views
48

.bash_historyを開いたときに、以前のセッションのエントリのみが含まれていると、現在のセッションが終了時にのみ追加されるようです。現在のセッションが保存されないようにする方法はありますか?方法を知っていれば、bashをクラッシュさせることもできます。私はkill -9のプロセスを見つけることができますが、もっと良い方法があれば知りたいと思っています。現在のbashセッションを履歴に保存しない

+2

これを達成するためのヒントな方法は、 'kill -9 $$'を使うことです。あなたの端末にSIGKILLを送ることで、ヒストリファイルに書き込む機会はありません。 – jordanm

答えて

55

は、現在のセッションの履歴をクリアするhistory -cコマンドを使用することです。それから、保存するものは何もありません(それは歴史からそれ自体を拭きます)。やるべき

+3

それはまた、ヒストファイルの内容を暗にします。 –

+1

それは私のためではありません。多分それはある時点で変わったでしょうか?私はbash 4.2を使用しています。 – FatalError

+13

はい、それは3.2のための歴史を核と4.2のためではありません –

53

設定解除$HISTFILE変数

$ unset HISTFILE 

HISTFILEが設定されていない、または履歴ファイルが書き込み不可である場合、履歴が保存されていない場合。 bashのクラッシュよりもおそらくよりエレガント
http://www.faqs.org/docs/bashman/bashref_106.html

+0

ありがとうございます。これは、-cの全履歴を無効にするBashのバージョンに適しています。 – dotancohen

+0

は私のために働いていません – RSFalcon7

+0

これはvs 'history -r'のメリットです。なぜならログインしてからすべてのことを失うからです。しかしこれで失われてしまいます。 _going_はセッションで行います。 – Pylinux

5

HISTFILE= 

はHISTFILEの設定を解除します。

+0

ありがとうございます、これが動作し、古いBashの古いサーバーで使用します。 – dotancohen

+0

は私のために働いていません – RSFalcon7

+0

また、試してみることもできます: unset HISTFILE このセッションの何かが履歴に残らないようにするには、確かにトリックがあります。それ以外の場合は、上記のHISTCONTROLに関するコメントを参照してください。 – th3penguinwhisperer

10

history -cに似た別のオプションがありますが、それは現在のセッションより前のものを消去しません。

それはあなただけでログインしている場合のように、HISTFILEから歴史を再読み込みしhistory -r、である。

私は、この作品または4.3.11より前の任意のbashのバージョンで利用できる場合は知っているが、私はありませんそれをリストに含めると便利です。

ここでは、このコマンドと-c 1との違いを示す例です:

[email protected]:~$ # I Just logged in 
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 
4679 2014-08-23 17:15:29 # Previous session 
4680 2014-08-23 17:15:33 # Still the previous session 
4681 2014-08-23 17:15:37 # note the datetime 
4682 2014-08-23 17:15:44 exit 
4683 2014-08-23 17:17:25 # I Just logged in 
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session 
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session 
[email protected]:~$ history -r 
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
6242 2014-08-23 17:15:29 # Previous session 
6243 2014-08-23 17:15:33 # Still the previous session 
6244 2014-08-23 17:15:37 # note the datetime 
6245 2014-08-23 17:15:44 exit 
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
[email protected]:~$ history -C# instead if I issue history -c 
[email protected]:~$ history # everything disappears 
5248 2014-08-23 17:23:13 history # everything disappears 
[email protected]:~$ 
+0

bash 4.3.39では、 'history -r'履歴ファイルの内容を現在の履歴リストに追加します。あなたがあなたの答えを掲示したときにそれが何をしていたのかわからない...歴史の数字はあなたのコマンドの間で大きく飛び交うが、倍増しない。 – user1902689

+0

追加してもよろしいですか? bash 4.3.11では、カウンタはリセットされていないため、実際に元のものに内容が追加されるわけではないので、数値は前に飛びます。実際に、ログアウトしてログインすると、元の状態に戻ります。 –

4

私のために、次の作品は。

export HISTFILE=/dev/null 

注意してください、その前にスペースがあります。ほとんどの現代のディストリビューションは、bashヒストリにスペースの後に入力されたコマンドを追加しません。それはあなたの履歴にもその行が現れないようにします。

7

私はこれが古いスレッドであることを知っています。 HISTCONTROL変数が設定されている場合、あなただけの特定のコマンドを使用する場合は

保存されないチェック:ただ、完成のためにこれを追加したい HISTCONTROL = ignorebothに または HISTCONTROL = ignorespace

主導で始まるすべてのコマンドスペースは歴史の中に置かれません。

ちょうど私の2セントです。

+0

非常に、ペンギンありがとう! – dotancohen

+0

これは素晴らしいものです! –

関連する問題