Làm thế nào để kiên trì lịch sử bash?


9

Tôi không biết nếu điều này được mong đợi, nhưng lịch sử của tôi không được lưu trong các phiên. Điều này có nghĩa là, nếu tôi đóng cửa sổ, thì khi tôi mở lại, lịch sử trống rỗng. Làm thế nào tôi có thể duy trì nó qua các phiên?

Dưới đây là kết quả đầu ra của các lệnh bạn đã hỏi:

 set -o | grep history
history         on

$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile:  HISTFILE=$HOME/.bash_history

$ ls -la ~/ | grep history -> no output

$ echo $HISTFILE 
~/.bash_history
$ echo $HISTSIZE
500
$ echo $HISTFILESIZE 
500

Sau các chỉnh sửa được mô tả trong câu trả lời dưới đây, bây giờ tôi nhận được:

grep -i hist .bashrc
# Make bash append rather than overwrite the history on disk
shopt -s histappend
# History Options
# Don't put duplicate lines in the history.
export HISTCONTROL="ignoredups"
# (added) A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# HISTIGNORE is a colon-delimited list of patterns which should be excluded.

Tôi vẫn không thể có một lịch sử được lưu trong các phiên. Tôi đọc các câu hỏi sau đây:

Không ai có vẻ giải quyết vấn đề của tôi, kể cả câu trả lời dưới đây từ chính người đã trả lời câu hỏi của họ từ bản sao được cho là trùng lặp.


Cũng xem câu hỏi của tôi ở đây và các câu hỏi mà nó liên kết đến. Hãy thử những gợi ý trong đó và hỏi lại nếu bạn vẫn gặp vấn đề. Trong thời gian dài, bỏ phiếu để đóng như là một bản sao.
terdon

chỉnh sửa: đặt -o | Lịch sử grep cho thấy lịch sử đang diễn ra, echo $ HISTFILE hiển thị ~ / .bash_history, echo $ HISTSIZE và $ HISTFILESIZE đều hiển thị 500. Nhưng lịch sử vẫn không được duy trì qua các phiên
Car981

$ HISTFILE được đặt thành ~ / .bash_history, nhưng không có tệp .bash_history trong ~. Làm sao có thể ?
Car981

Vui lòng chỉnh sửa câu hỏi của bạn để thêm thông tin mới thay vì bình luận. Bao gồm đầu ra của các lệnh: set -o | grep history, grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profilels -la ~/ | grep history.
terdon

Hãy thử thiết lập một tệp lịch sử cụ thể, thêm dòng này vào ~/.bashrc: export HISTFILE="~/history". Điều đó làm cho một sự khác biệt?
terdon

Câu trả lời:


7

Chà, có vẻ như bạn ~/.bashrckhông có các tùy chọn cần thiết. Hãy chắc chắn rằng những dòng này nằm trong ~/.bashrc:

# Make Bash append rather than overwrite the history on disk:
shopt -s histappend
# A new shell gets the history lines from all previous shells
PROMPT_COMMAND='history -a'
# Don't put duplicate lines in the history.
export HISTCONTROL=ignoredups

Nó vẫn không hoạt động. Xem chỉnh sửa để cập nhật kết quả đầu ra mới.
Car981

7

OK tôi phát hiện ra những gì sai. Tôi không thể đóng cửa sổ, tôi phải gõ 'thoát' để nó đóng một cách duyên dáng.


Bạn đã trả lời câu hỏi của riêng bạn! Điều này thật tuyệt, nhưng bạn nên đánh dấu nó như vậy, để người khác biết rằng bạn không mong đợi bất kỳ câu trả lời nào nữa.
Tiago

Khó có thể nói đây là một câu trả lời chấp nhận được - Tôi đã gặp vấn đề tương tự và tự đóng cửa sổ để lưu lịch sử không phải là một ý tưởng hay. Thông thường, tôi đóng cửa sổ đầu cuối theo những cách khác và sau đó không muốn mất nó.
Krzysztof Bociurko
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.