Macではシエラ。
HIST
関連設定は表示されません。
~ @ Magni (jcollum)
$ env|grep HIST
~ @ Magni (jcollum)
$ cat ~/.bash_profile | grep HIST
~ @ Magni (jcollum)
しかし、私の歴史で昨日私がしたことのいくつかは、再起動後にもはや存在しません。コマンドを実行するたびに、コマンドの前にスペースを追加するのは本当に疑わしいです。
ここに問題を解決する方法を教える投稿があることを知っていますが、知りたいのですが。なぜ起こったことは次のとおりです。
たとえば、昨日実行したものをgrepするとcurl
何もありません。
~ @ Magni (jcollum)
$ history | grep curl
166 curl -X POST -d [email protected] -d password=********** http://localhost:3000/login
503 hg curl
519 history | grep curl
400個の命令の前?しかし、先週にbashを12回使用したことがわかりましたcurl
(そして今週は何百ものコマンドを実行するのに十分なbashを使用しませんでした)。
基本的に私は混乱していて、なぜ私がやっていることがそんなに欠けているのかわかりません。 1つのbashインスタンスでのみ履歴を記録できますか?
答え1
1つのbashインスタンスでのみ履歴を記録できますか?
これが今起こっていることです。変更に多くの努力をしない限り、bashで記録がどのように機能するかは次のとおりです。
- Bashが起動すると、履歴ファイルから保存された履歴がロードされます。
- コマンドが実行されるたびに bash メモリの書き込みに追加されます。
- Bashが終了すると、蓄積された履歴が履歴ファイルに保存されます。
ここで、2つのbashインスタンスを起動するとします。どちらも起動時に履歴ファイルをロードします。どちらも、自分が実行するコマンドを独自の履歴に追加します。インスタンスが終了すると、以前の履歴と独自のコマンドが履歴ファイルに保存されます。 2 番目のインスタンスが終了すると、前の履歴とともに保存されます。それ独自のコマンドは履歴ファイルに書き込みます。これを行うと、最初の終了インスタンスの履歴が消去されます。
Bashの記録保存機構は簡単すぎる。履歴には、実行中の他のすべてのインスタンスが適用されます。最後に終了したインスタンスは、他のインスタンスの履歴を削除します。ソリューションには、メモリ内の完全な履歴で履歴ファイルを上書きするのではなく、履歴ファイルに新しい履歴を追加すること、または実行直後に履歴ファイルに行を追加することが含まれます。バラより複数の端末ウィンドウでbash履歴を保持するそして複数の端末ウィンドウでbash履歴を保持するこのバリエーションと他のバリエーションを実装するいくつかの方法を学びます。
最も簡単な解決策は、基本的に合理的な方法で履歴を保存するzshを実行することです。特に、Appleは2009年以降にリリースされたバージョンのライセンスが好きではないため、以前のバージョンのbashに閉じ込められたmacOSを実行しているので、これを行うことをお勧めします。