Sau khi tìm hiểu điều này shopt -s histappend
có nghĩa là gì , có vẻ như một thiết lập rất lành mạnh và tôi ngạc nhiên rằng nó không mặc định. Tại sao bất cứ ai cũng muốn xóa lịch sử của họ trên mỗi lối thoát vỏ?
Sau khi tìm hiểu điều này shopt -s histappend
có nghĩa là gì , có vẻ như một thiết lập rất lành mạnh và tôi ngạc nhiên rằng nó không mặc định. Tại sao bất cứ ai cũng muốn xóa lịch sử của họ trên mỗi lối thoát vỏ?
Câu trả lời:
Chà, khi histappend
không được đặt, điều này không có nghĩa là lịch sử bị xóa trên mỗi lần thoát vỏ. Không có histappend
bash đọc histfile khi khởi động vào bộ nhớ - trong khi vận hành, các mục nhập mới được thêm vào - và trên shell thoát, các dòng HISTSIZE cuối cùng được ghi vào tệp lịch sử mà không cần nối thêm, tức là thay thế nội dung trước đó.
Ví dụ: nếu histfile chứa 400 mục, trong thời gian chạy bash, 10 mục mới được thêm vào - histsize được đặt thành 500, thì histfile mới chứa 410 mục.
Hành vi này chỉ có vấn đề nếu bạn sử dụng song song nhiều trường hợp bash. Trong trường hợp đó, tệp lịch sử chỉ chứa nội dung của trình bao thoát cuối cùng.
Độc lập với điều này: Có một số người muốn xóa lịch sử của họ khi thoát khỏi shell vì lý do riêng tư.
histappend
có liên quan đến việc root
lịch sử có đến được đĩa không? Một lần nữa, nó chỉ ảnh hưởng đến những gì được viết, không phải nếu .
histappend
cũng như HISTCONTROL=ignoredups:erasedups:ignorespace
có vẻ như một mặc định tốt cho hầu hết mọi người.
histappend
vô hiệu quả nếu tôi có HISTFILESIZE=
và HISTSIZE=
cho lịch sử vô tận?
Để tương thích lịch sử, tôi đoán. Các histappend
tùy chọn không tồn tại cho đến khi bash 2.0.
histappend
.
bash
'thuần' hoặc được cung cấp phân phối.bashrc
. Đối với trước đây, @Gilles có lẽ là chính xác. theo nghĩa thứ hai,-s histappend
được mặc định vào, ví dụ: Debian, kể từ 2008: bug.debian.org/cgi-bin/ormsreport.cgi?orms=452459