Làm thế nào để có được lịch sử lệnh vô hạn trong bash?


54

Tôi đặt export HISTSIZE=99999999999999nhưng đó là cách tốt nhất? Tôi không biết nếu tràn có thể xảy ra. Tôi đang tìm kiếm một cách đáng tin cậy để kiểm tra để loại bỏ giới hạn lịch sử lệnh.


không có cơ chế tích hợp để làm điều đó mà tôi biết.

Tôi chỉ bình luận để khi điều này được trả lời, tôi cũng sẽ biết !!

2
debian-adftime.org/articles/543 có thể là một câu trả lời tốt hơn. Ít nhất, nó xử lý các giá trị vô cực lớn hơn so với giải pháp trên superuser. :-)

Bạn có thể có thể cắt giảm xuống còn 9999 trong thực tế (hoặc thậm chí 999; tôi sử dụng 1000). Tôi chưa bao giờ thấy một lịch sử lớn hơn khoảng 1000 là hữu ích. Nếu tôi muốn khôi phục một lệnh để biến nó thành một tập lệnh, tôi thường làm tốt điều đó trong vòng một nghìn lệnh. Nếu không, nó có thể đi và không có tác hại gì.
Jonathan Leffler

@JonathanLeffler: Của tôi là 1300 dòng, và nó nhỏ như tôi có thể làm được. Ctrl-R rất hữu ích.
l0b0

Câu trả lời:


69

nó thực sự không phải là tài liệu (tốt) và tôi đoán 99% người dùng bash trên kế hoạch này đã đặt HISTSIZE thành một số lượng lớn.

Trong lịch sử bash GNU được xử lý thông qua thư viện readline hùng mạnh. Thư viện có tùy chọn giới hạn kích thước lịch sử ("stifle" trong biệt ngữ readline) hoặc không và bash chỉ đơn giản đặt lịch sử đường đọc thành stifled / unstifled. Nếu bạn xem xét ví dụ GNU bash phiên bản 4.2, biến tệp.c, dòng 4443, hàm void sv_histsize (char *), bạn sẽ tìm thấy nhận xét này (và toàn bộ ngột ngạt / không thay đổi trong hàm sau):

/ * Phải làm gì sau khi các biến HISTSIZE hoặc HISTFILESIZE thay đổi.
Nếu có một giá trị cho HISTSIZE này (và nó là số), thì hãy bóp nghẹt lịch sử.
Mặt khác, nếu KHÔNG có giá trị cho biến này, hãy bỏ qua lịch sử. Nếu tên là HISTFILESIZE và giá trị của nó là
số, hãy cắt bớt tệp lịch sử để giữ không quá nhiều
dòng. * /

Vì vậy, điều này nên làm thủ thuật:

export HISTSIZE=""

Và cũng điều này (nếu bạn cảm thấy thách thức):

export HISTSIZE="GOTCHA"

Hi vọng điêu nay co ich.


2
Có thể các tu sĩ ban phước cho bạn :)
meeDamian

17
Tôi đề nghị: xuất HISTSIZE = "INFINITE"
AmanicA
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.