私のホームディレクトリにあるドットファイルをgitソース管理下の別のフォルダにある実際のファイルにシンボリックリンクしました。これはうまく機能しますが、何らかの理由で問題があります.zhistory
。
$ echo $HISTFILE
/Users/amelio/.zhistory
$ cd & ln -s $DOT_FILES_REPO/.zhistory .
$ fc -W && fc -R
上記のコマンドを実行した後、私が見る.zhistory
ものはいいえ最後のコマンドの後のシンボリックリンク。なぜ?.zhistory
私のホームディレクトリにある他のファイルへのシンボリックリンクをどのように使用できますか?
答え1
zshが履歴ファイルを更新すると、一時ファイルが作成され、次の場所に移動します。
print the history >.zhistory.new
mv .zhistory.new .zhistory
以前にシンボリックリンクだったら、.zhistory
それ以降はそうではありません。
このアプローチの利点は、zshがクラッシュしても(エラー、突然のシャットダウン、突然の再起動のため)、履歴ファイルが影響を受けないことです。特に、履歴ファイルは決して切り捨てられたり無効になります。
履歴ファイルを別の場所に保存するには、シンボリックリンクを使用せずに代わりに変数を設定してくださいHISTFILE
。