Tại sao mọi người sẽ không đặt 'histappend' trong bash?


36

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ỏ?


ngoài sự hiểu lầm về những gì tùy chọn này thực hiện - được sửa bởi @maxscchlepzig - "mặc định" có ít nhất hai nguồn: 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
underscore_d

3
Chà, unix không thực sự nổi tiếng với những mặc định lành mạnh? Theo mặc định, tôi đã mong đợi những mặc định không thân thiện nhất: P (phóng đại nhỏ)
olejorgenb

Câu trả lời:


34

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ư.


Ngoài ra, vì lý do bảo mật, có thể không nên lưu lịch sử cho người dùng root. Tính năng này cho phép root có lịch sử shell mà không bao giờ được lưu vào đĩa.
Mei

1
+1 cho "không có nghĩa là lịch sử bị xóa trên mỗi lần thoát vỏ". Điều này được giải thích hoàn toàn tốt ở những nơi khác - nhưng có lẽ không đủ ngắn gọn để tiếp cận một số độc giả, đặc biệt là trong bối cảnh của tên tùy chọn (OK, tôi có thể là một trong những độc giả đó trong một thời gian). @Mei, làm thế nào để hoán vị 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 .
gạch dưới

5
có ai chạy ít hơn 2 bash không? 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.
bảnh bao

histappendvô hiệu quả nếu tôi có HISTFILESIZE=HISTSIZE=cho lịch sử vô tận?
Marc.2377

1
@dashesy Cá nhân tôi không muốn bỏ qua / xóa các mục trùng lặp. Tôi đã bật HISTTIMEFORMAT và tôi muốn có thể quay lại và xem khi tôi ban hành lệnh ... và nếu tôi ban hành nhiều lần, tôi muốn biết khi nào mỗi lệnh được ban hành. Đó là một sở thích cá nhân, mà riêng của họ. ;)
msb

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.