web-dev-qa-db-ja.com

.bash_historyがGit for Windowsで更新されない(git bash)

Git for Windows(バージョン1.7.8-preview20111206)を使用しています。HOMEフォルダーに.bash_historyファイルがあっても、自動的に更新されません。 Git Bashを起動すると、.bash_historyファイルに手動で追加した履歴コマンドが表示されますが、自動的に更新されません。

shopt -s histappendコマンドを使用して、シェルを閉じるたびに履歴が確実に保存されるようにしますが、機能しません。

手動でhistory -wコマンドを実行すると、ファイルが更新されますが、shoptコマンドが正常に機能しない理由を理解したいと思います。

なぜこの動作が起こっているのですか?

前もって感謝します

42
franmon

これを~/.bash_profile

Prompt_COMMAND='history -a'
60
Steven Penny

言われたように ここ 、Windowsでgit bash履歴を保存するには、次のコマンドで端末を閉じないでください X ボタン。代わりにexitコマンドを使用してください。コマンドの履歴は、承認された回答に記載されている構成に関係なく保存されます。

22
fracz

Windows 8でgit bashを使用する場合は、これを〜/ .bash_logoutファイルに追加するだけです。

history > .bash_history

明らかに〜/ .bash_historyファイルが必要です。

よろしく。

6
Remy Ticona

次のファイルを作成します

~/.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

2
Anddo

VSCodeでGit bashを使用している場合は、上記のC.M.のコメントを参照してください。

これはVisual Studio Codeでgitのbashを実行するために機能しましたが、私は〜/ .bashrcではなく〜/ .bash_profileを入力するを実行する必要がありました。 - CM。 7月29日14時43分

これで解決しました。

2
Chris

私はWindows 10を使用していますが、これはアクセス許可の問題でした。一時的な解決策は、Everyoneグループを追加して~/.bash_historyファイル。

0
mmahgoub

私にとっては、C:\ Users\MY_USER \に移動して.bash_profileファイルを削除することがうまくいきました。

PS:私はWindows 10を使用しています

0
Samuel Souza