Bất cứ khi nào tôi mở một phiên bản mới của một thiết bị đầu cuối, lịch sử là trống rỗng. Tại sao vậy? Tôi có cần phải thiết lập một cái gì đó? Trong bash không cần điều này, mặc dù.
Bất cứ khi nào tôi mở một phiên bản mới của một thiết bị đầu cuối, lịch sử là trống rỗng. Tại sao vậy? Tôi có cần phải thiết lập một cái gì đó? Trong bash không cần điều này, mặc dù.
Câu trả lời:
Bash và zsh có mặc định khác nhau. Zsh không lưu lịch sử vào một tệp theo mặc định.
Khi bạn chạy zsh mà không có tệp cấu hình, nó sẽ hiển thị giao diện cấu hình. Trong giao diện cấu hình này, chọn
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
sau đó xem lại các cài đặt được đề xuất và chọn
# (0) Remember edits and return to main menu (does not save file yet)
Lặp lại cho các menu con khác để hoàn thành (2), (3) tổ hợp phím và (4), sau đó chọn
(0) Exit, saving the new settings. They will take effect immediately.
từ menu chính.
Các cài đặt liên quan đến lịch sử được đề xuất là
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory
Tôi sẽ sử dụng một tên khác cho tệp lịch sử, để chỉ ra tệp lịch sử của zsh. Và 1000 dòng có thể được tăng lên trên một hệ thống hiện đại.
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
Nhân tiện, những dòng này đi vào ~/.zshrc
.
Mặc dù câu trả lời hiện tại là chính xác, tôi nghĩ rằng có thể đáng để thêm rằng có thể có một lựa chọn tốt hơn là appendhistory
lưu lịch sử của bạn và đây là SHARE_HISTORY
.
Từ các tài liệu SHARE_HISTORY
"cả hai nhập các lệnh mới từ tệp lịch sử và cũng khiến các lệnh đã nhập của bạn được thêm vào tệp lịch sử". Điều này có nghĩa là các shell cũng biết về lịch sử của nhau mà không cần phải đóng cái hiện tại hoặc mở cái mới.
Vì vậy, tất cả cùng nhau bạn sẽ thiết lập nó như thế này:
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
INC_APPEND_HISTORY_TIME
, ghi vào lịch sử từ tất cả các thiết bị đầu cuối như trên, nhưng lịch sử đó "sẽ không có sẵn ngay lập tức từ các phiên bản khác của shell đang sử dụng cùng một tệp lịch sử". Điều này có ý nghĩa hơn với tôi, bởi vì sau đó tôi có thể đi qua lịch sử của từng thiết bị đầu cuối một cách độc lập, nhưng tất cả vẫn được ghi lại.
INC_APPEND_HISTORY_TIME
có thể có ý nghĩa logic hơn. Tôi có lẽ không nên nói "tốt hơn", tôi đoán đó chỉ là vấn đề sở thích cá nhân!
khi bạn lần đầu tiên chuyển từ bash sang zsh, lịch sử bash của bạn sẽ không tiếp tục. Vì vậy, tất cả lịch sử bạn có trong bash vẫn nằm trong tệp lịch sử của bash. zsh bắt đầu ghi lại lịch sử từ khi bạn bắt đầu sử dụng nó làm vỏ.
Nếu bạn không thiết lập nó để ghi lại lịch sử, bạn có thể chạy lại trình hướng dẫn cấu hình và cho zsh biết lịch sử sẽ lưu bao nhiêu. Thay đổi tên của ~ / .zshrc hoặc xóa nó để có một phát bắn mới vào trình hướng dẫn.
Nếu nó không hoạt động và bạn đã có tất cả những thứ này, hãy thử:
fc -W
Điều đó ghi lịch sử hiện tại vào tập tin lịch sử. Và nếu bạn nhận được:
zsh: locking failed for /home/username/.zsh_history: permission denied
sau đó là thời gian để kiểm tra quyền trên tệp và trên thư mục mẹ.
zsh
, nhưng theo mặc địnhbash
ghi vào các tệp lịch sử của anh ấy khi thoát , điều đó có nghĩa là nếu bạn chưa sử dụng nó trước đó và mở một số shell, tất cả chúng sẽ hiển thị lịch sử cho đến khi ít nhất một lần đăng xuất, từ đó viết tệp lịch sử của nó.