lưu lịch sử bash, thường xuyên


9

Tôi đã thiết lập bash để lưu lịch sử, vào một tập tin. Nó làm điều này bất cứ khi nào bash thoát [đúng]. Vì đôi khi bash không thoát đúng, lịch sử bị mất.

Vì vậy, câu hỏi là tôi có thể thiết lập bash để lưu lịch sử thường xuyên hơn không?


Tôi đang chạy Debian Gnu (phiên bản 6, Bóp) với nhân Linux.

phiên bản bash: GNU bash, phiên bản 4.1.5 (1) -release (i486-pc-linux-gnu)

Câu trả lời:


8

lưu cái này vào bash_profile hoặc bashrc của bạn

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"


Đây vẫn là một câu trả lời hợp lệ? Trong hệ thống của tôi, có một mục shopt -s histappenddưới /etc/bash/bashrc. Tuy nhiên, bất kỳ lối thoát ô uế nào của shell đang chạy, sẽ mất lịch sử dòng lệnh của nó.
Nikos Alexandris

-1

Có thể $ HISTFILE của bạn được sở hữu bởi root. Giả sử bạn đang sử dụng bash làm vỏ đăng nhập của bạn. Đây là cách kiểm tra:

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

Mặc định cho HISTFILE phải là ~ / .bash_history, nếu bạn thấy lỗi "cần đặt HISTFILE" hoặc nếu $ HISTFILE không ~ / .bash_history, thì bạn nên kiểm tra ~ / .profile hoặc ~ / .bash_profile hoặc ~. bashrc để đảm bảo rằng nó không được đặt hoặc đặt lại không chính xác.

Thông thường, nó chỉ thuộc sở hữu của root, vì vậy chỉ cần đặt lại nó:

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

Đăng xuất rồi đăng nhập.

$ history

Sẽ hiển thị nhóm lệnh cuối cùng được nhập trước khi tệp được sở hữu bởi root, theo sau là các lệnh được nhập sau khi quyền sở hữu tệp được thay đổi.


3
Vì OP nói rằng lịch sử được lưu khi bash thoát bình thường, vấn đề của anh ta không liên quan gì đến các quyền. Có lẽ câu trả lời của bạn vẫn có thể hữu ích cho những người gặp rắc rối với lịch sử bash.
Dmitry Grigoryev
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.