Tôi sử dụng nhiều thiết bị đầu cuối Konsole. Và tôi muốn tất cả các lệnh tôi gõ trong mỗi thiết bị đầu cuối sẽ được lưu trong lịch sử lệnh, để konsole tiếp theo tôi mở sẽ có tất cả chúng. Để ngăn mỗi thiết bị đầu cuối ghi lại lịch sử lệnh của thiết bị đầu cuối khác, tôi đã đưa ra các cài đặt sau trong.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
Tôi đã đưa ra dòng cuối cùng để xem số lệnh trong lời nhắc của tôi. Lệnh không. chưa bao giờ vượt quá 600, nhưng vẫn còn một số lệnh cũ của tôi đang biến mất khỏi lịch sử. Có nhiều lệnh được đưa ra lặp đi lặp lại, nhưng như mong đợi ignoredups
, nó không bao giờ tăng lệnh không có dấu nhắc. Tuy nhiên, các lệnh cũ vẫn đang biến mất. Và số lượng lệnh trong lịch sử luôn chỉ còn hơn 500.
Các .bash_history
tập tin vẫn chứa rất nhiều bản sao mặc dù bỏ qua.
PS: Đầu ra của echo $HISTSIZE
và $HISTFILESIZE
cả hai=1000
Cập nhật: Tôi tìm thấy vấn đề trong mục trên .bashrc
. Chỉ cần gọi history -a
vào PROMPT_COMMAND
đơn giản là nối thêm lệnh mới cuối cùng vào .bash_history. Vì vậy, ignoredups
và erasedups
không có hiệu lực.
Có cách nào, tôi vẫn có thể viết thư cho .bash_history mà không cần sao chép từ mọi thiết bị đầu cuối không? Tôi không muốn tải toàn bộ lịch sử tại mỗi dấu nhắc lệnh bằng cách history -r
viết lại history -w
, bởi vì các lệnh tôi đã ban hành trong một thiết bị đầu cuối cũng sẽ xuất hiện trong một thiết bị đầu cuối chạy song song khác. Tôi muốn các lệnh kết hợp chỉ xuất hiện trong một thiết bị đầu cuối mới.
Câu đố, tại sao lịch sử của tôi đã bị cắt giảm đến 500 được giải quyết. Tôi nhận thấy nó xảy ra mỗi khi tôi ssh vào máy này. Tạo một .bash_profile
với mục sau đây đã giải quyết vấn đề này.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Bây giờ .bashrc của tôi được thực thi mỗi lần tôi cũng ssh. Và kích thước tập tin lịch sử hiện đang tăng đơn điệu.
bug-bash
danh sách gửi thư một năm sau khi câu hỏi này được đăng : lists.gnu.org/archive/html/orms-bash/2013-07/msg00092.html