Câu trả lời:
Tất cả bạn cần làm là thiết lập HISTSIZE
trong hồ sơ bash của bạn ( ~/.bash_profile
). Bạn có thể HISTFILESIZE
bỏ mặc . Điều này sẽ cấu hình cả lịch sử trong bộ nhớ và lịch sử dựa trên tệp.
# Saves 10 million lines in memory and in the bash history file.
HISTSIZE=10000000
Giải thích, thông tin bổ sung.
Vấn đề là HISTFILESIZE chỉ đặt lịch sử tối đa được lưu vào tệp khi bạn khởi động một phiên. HISTSIZE là những gì xác định có bao nhiêu dòng được lưu vào cuối phiên. Nếu HISTFILESIZE lớn hơn HISTSIZE của bạn, bạn sẽ không bao giờ nhìn thấy nhiều hơn HISTSIZE của mình vì tệp bị ghi đè bằng các lệnh HISTSIZE ( trừ khi bạn đặt lịch sử để chắp thêm, nhưng đó là một chủ đề riêng: tìm kiếm histappend
trong các lệnh dựng sẵn shell cho nó) .
Đây là lý do bạn thấy không có hiệu lực. Với HISTSIZE theo mặc định (có thể là 500), tệp lịch sử của bạn luôn bị ghi đè bởi các lệnh $ HISTSIZE gần đây nhất. Bất cứ điều gì cũ hơn (có khả năng phát triển danh sách vượt qua $ HISTSIZE) sẽ bị xóa sạch.
Đối với hầu hết các trường hợp, không cần thiết lập HISTFILESIZE độc lập với HISTSIZE.
HISTSIZE xác định có bao nhiêu dòng sẽ được ghi vào tệp lịch sử. Danh sách lệnh được rút ngắn khi thoát, trước khi ghi vào tệp lịch sử, giữ N dòng gần đây nhất. Theo mặc định, danh sách này ghi đè lên tệp lịch sử.
HISTFILESIZE xác định tệp lịch sử (theo dòng) có thể lớn đến mức nào. Các tập tin bị cắt ngắn khi khởi động, giữ N dòng gần đây nhất. Ngoài ra, tệp lịch sử có khả năng bị cắt ngắn bất cứ khi nào HISTFILESIZE được đặt.
Cuối cùng, mặc dù có vẻ như không có giấy tờ, BASH thiết lập HISTFILESIZE dựa trên HISTSIZE nếu HISTSIZE được đặt trong khi khởi động. Tôi đã thử điều này trên macOS và một vài loại Ubuntu và hành vi này phù hợp. Nếu bạn đặt HISTSIZE trong tệp khởi chạy ( không thông qua dòng lệnh bằng bất kỳ phương tiện nào), HISTFILESIZE sẽ được đặt thành khớp. (Hãy tự mình thử: đặt HISTSIZE thành một số giá trị lớn nhất định trong .bash_profile, thoát và bắt đầu một thiết bị đầu cuối mới, sau đó echo $HISTSIZE $HISTFILESIZE
và bạn sẽ thấy chúng khớp với nhau.)
Do đó, không có lý do gì để chạm vào HISTFILESIZE trừ khi bạn muốn các giá trị khác nhau và các trường hợp sử dụng có các giá trị khác nhau là rất hiếm (và thường liên quan đến nhiều cài đặt tùy chỉnh lịch sử hơn để có được thứ gì đó hữu ích).