Mac のターミナル セッション間で Bash の履歴が保存されない

Mac のターミナル セッション間で Bash の履歴が保存されない

私の bash 履歴がなぜか機能しなくなってしまいましたが、修正方法がわかりません。私の .bashrc は次のようになります。

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

ただし、実行するとecho $HISTFILE出力されます/Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew

私は .bash_history ファイルの所有者なので、この問題をどのように修正すればよいかよくわかりません。

ありがとう!

答え1

ターミナルは各ターミナル セッションに一意の識別子を割り当て、それを TERM_SESSION_ID 環境変数を介して通信します。これにより、ターミナルで実行されているプログラムは、ターミナルを終了して Resume を有効にして再起動するときに、アプリケーション固有の状態を保存/復元できます。

新しいフォルダー (~/.bash_sessions/) は、セッションに固有の HISTFILE および .session ファイルを保存するために使用されます。

シェルの起動中にセッション ファイルが実行されます。古いファイルは定期的に削除されます。

デフォルトの動作では、復元されたターミナル セッションごとに bash コマンド履歴を個別に保存および復元します。また、新しいセッションのグローバル履歴にコマンドをマージします。

この動作を無効にして、単一の履歴を共有するには、

export SHELL_SESSION_HISTORY=0

HISTTIMEFORMAT が定義されている場合、セッションごとの履歴はデフォルトで無効になります (詳細は /private/etc/bashrc_Apple_Terminal を参照)

次のファイルが存在する場合、保存/復元メカニズムは無効になります。

~/.bash_sessions_disable

AppleはEl Capitanのリリース以降、すでにいくつかの動作を変更しているので、これについてはこちらで詳しく読むことをお勧めします。less /private/etc/bashrc_Apple_Terminal

答え2

El Capitan へのアップグレード後、同様のことに気付きました。.bash_sessions_disableホーム ディレクトリにファイルを追加するだけで、新しい bash セッションが無効になり、.bash_history再び使用できるようになります。

これRedditスレッドより詳しい情報とリンクがあります。

答え3

最新の RVM バージョンに更新するか、次のコマンドを実行することで、RVM の問題を解決できます。

  echo 'shell_session_update' > $HOME/.bash_logout

見る参考:詳細については。

答え4

Mac の場合、デフォルトのログイン シェルは であり、の代わりにbashが実行されると思います。つまり、間違ったファイルを編集していたことになります。.profile.bashrc

関連情報