Không thể tăng chiều dài lịch sử bash Mac OSX


26

Tôi đã đặt ~ / .bash_profile một thời gian trước để có độ dài hơn 500 dòng nhưng dường như hệ thống không thể bắt được điều này.

Bạn có biết tại sao?

> nano -w ~/.bash_profile
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
HISTFILESIZE=10000000

> history | wc -l
     500

Câu trả lời:


34

Bạn cũng cần phải thiết lập HISTSIZE=10000000.

HISTFILESIZExác định số lượng dòng cần lưu trong tệp lịch sử trong khi HISTSIZExác định số lượng dòng cần lưu trong bộ nhớ. Cả hai mặc định là500

Thực hiện echo $HISTFILESIZE $HISTSIZEtrước khi bạn thực hiện thay đổi và sau đó một lần nữa sau. Bạn nên xem 10000000 500trước sau đó 10000000 10000000.


15

Bạn cần xuất HISTSIZEHISTFILESIZEbiến môi trường trong ~/.bash_profiletệp của bạn .

Thêm các dòng sau vào ~/.bash_profile:

# history size
export HISTFILESIZE=1000000
export HISTSIZE=1000000

8

Câu trả lời:

Tất cả bạn cần làm là thiết lập HISTSIZEtrong 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 histappendtrong 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 $HISTFILESIZEvà 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).


Bạn đúng Zim. Mã nguồn Bash cho thấy rằng nó sẽ chỉ đặt HISTFILESIZE thành HISTSIZE nếu HISTFILESIZE không được đặt. git.savannah.gnu.org/cgit/bash.git/tree/ Khăn
robert
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.