Git for Windows(バージョン1.7.8-preview20111206)を使用しています。HOMEフォルダーに.bash_historyファイルがあっても、自動的に更新されません。 Git Bashを起動すると、.bash_historyファイルに手動で追加した履歴コマンドが表示されますが、自動的に更新されません。
shopt -s histappend
コマンドを使用して、シェルを閉じるたびに履歴が確実に保存されるようにしますが、機能しません。
手動でhistory -w
コマンドを実行すると、ファイルが更新されますが、shoptコマンドが正常に機能しない理由を理解したいと思います。
なぜこの動作が起こっているのですか?
前もって感謝します
これを~/.bash_profile
Prompt_COMMAND='history -a'
言われたように ここ 、Windowsでgit bash履歴を保存するには、次のコマンドで端末を閉じないでください X ボタン。代わりにexit
コマンドを使用してください。コマンドの履歴は、承認された回答に記載されている構成に関係なく保存されます。
Windows 8でgit bashを使用する場合は、これを〜/ .bash_logoutファイルに追加するだけです。
history > .bash_history
明らかに〜/ .bash_historyファイルが必要です。
よろしく。
次のファイルを作成します
~/.bash_profile
~/.bashrc
そして、両方に次の行を入れます
Prompt_COMMAND='history -a'
コンソール(git bash)自体からこれを行うには、次のコマンドを使用します
echo "Prompt_COMMAND='history -a'" >> ~/.bash_profile
echo "Prompt_COMMAND='history -a'" >> ~/.bashrc
history -a
の意味
history --help
コマンドから
-aこのセッションの履歴行を履歴ファイルに追加します
Prompt_COMMAND
とは何ですか?
Bashは、Prompt_COMMANDと呼ばれる環境変数を提供します。この変数の内容は、Bashがプロンプトを表示する直前に通常のBashコマンドとして実行されます。
.bash_profile
と.bashrc
の違い
.bash_profile
はログインシェルに対して実行され、.bashrc
はインタラクティブな非ログインシェルに対して実行されます。
マシンに座っているか、sshを介してリモートでコンソールからログイン(ユーザー名とパスワードを入力)すると、最初のコマンドプロンプトの前に.bash_profileが実行され、シェルが構成されます。
ただし、すでにマシンにログインしていて、新しいターミナルウィンドウ(xterm)を開いている場合は、ウィンドウコマンドプロンプトの前に.bashrcが実行されます。 .bashrcは、ターミナルで/ bin/bashと入力して新しいbashインスタンスを開始したときにも実行されます。
OS Xでは、デフォルトでターミナルが毎回ログインシェルを実行するため、他のほとんどのシステムとは少し異なりますが、環境設定で設定できます。
参考文献
https://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.htmlhttps://Apple.stackexchange.com/questions/51036/what-is- the-difference-between-bash-profile-and-bashrc
VSCodeでGit bashを使用している場合は、上記のC.M.のコメントを参照してください。
これはVisual Studio Codeでgitのbashを実行するために機能しましたが、私は〜/ .bashrcではなく〜/ .bash_profileを入力するを実行する必要がありました。 - CM。 7月29日14時43分
これで解決しました。
私はWindows 10を使用していますが、これはアクセス許可の問題でした。一時的な解決策は、Everyoneグループを追加して~/.bash_history
ファイル。
私にとっては、C:\ Users\MY_USER \に移動して.bash_profileファイルを削除することがうまくいきました。
PS:私はWindows 10を使用しています