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 histappendkhô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ó histappendbash đọ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ư.
histappendcó liên quan đến việc rootlị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 .
histappendcũng như HISTCONTROL=ignoredups:erasedups:ignorespacecó vẻ như một mặc định tốt cho hầu hết mọi người.
histappendvô 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 histappendtù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