履歴は zsh に保存されません。

履歴は zsh に保存されません。

端末の新しいインスタンスを開くたびに履歴が空です。なぜそんなことですか?何かを設定する必要がありますか?ただし、Bashではこれを行う必要はありません。

答え1

Bashとzshはデフォルト値が異なります。デフォルトでは、Zshは履歴をファイルに保存しません。

構成ファイルなしでzshを実行すると、構成インターフェースが表示されます。この設定インターフェイスで、次を選択します。

(1)  Configure settings for history, i.e. command lines remembered
     and saved by the shell.  (Recommended.)

その後、推奨設定を確認し、

# (0)  Remember edits and return to main menu (does not save file yet)

他のサブメニューに対して(2)完了、(3)キーバインディング、(4)オプションを繰り返して選択します.

(0)  Exit, saving the new settings.  They will take effect immediately.

メインメニューから。

推奨履歴に関する設定は次のとおりです。

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory

zshの履歴ファイルであることを示すために、履歴ファイルに別の名前を使用します。最新のシステムでは、最大1000行を追加できます。

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

~/.zshrcところで、このような行が入ります。

答え2

appendhistory既存の回答は正確ですが、履歴を保存するよりも優れたオプションがある可能性があることを追加することが価値があると思いましたSHARE_HISTORY

文書内のSHARE_HISTORY「記録ファイルから新しいコマンドをインポートするか、ユーザーが入力したコマンドを履歴ファイルに追加できます。」これは、現在のシェルを閉じたり、新しいシェルを開かなくても、シェルがお互いの履歴を知っていることを意味します。

したがって、次のように設定する必要があります。

HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY

答え3

うまくいかず、すべての準備が完了したら、次のことを試してください。

fc -W

これにより、現在の履歴が履歴ファイルに記録されます。あなたが得る場合:

zsh: locking failed for /home/username/.zsh_history: permission denied

これでファイルの権限を確認します。そして親ディレクトリにあります。

答え4

エイリアスの使用:

エイリアス履歴="history1"

これを.zprofileに追加できます。

テストして違いを確認してください。歴史の歴史1

関連情報