Ở đây tôi sẽ chỉ ra một vấn đề với
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
và
PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
Nếu bạn chạy nguồn ~ / .bashrc, $ PROMPT_COMMAND sẽ giống như
"history -a; history -c; history -r history -a; history -c; history -r"
và
"history -a; history -n history -a; history -n"
Sự lặp lại này xảy ra mỗi khi bạn chạy 'source ~ / .bashrc'. Bạn có thể kiểm tra PROMPT_COMMAND sau mỗi lần bạn chạy 'nguồn ~ / .bashrc' bằng cách chạy 'echo $ PROMPT_COMMAND'.
Bạn có thể thấy một số lệnh rõ ràng bị hỏng: "history -n history -a". Nhưng tin tốt là nó vẫn hoạt động, bởi vì các phần khác vẫn tạo thành một chuỗi lệnh hợp lệ (Chỉ liên quan đến một số chi phí bổ sung do thực hiện một số lệnh lặp đi lặp lại. Và không quá sạch sẽ.)
Cá nhân tôi sử dụng phiên bản đơn giản sau:
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r"
trong đó có hầu hết các chức năng trong khi không có vấn đề như đã đề cập ở trên.
Một điểm khác để thực hiện là: thực sự không có gì kỳ diệu . PROMPT_COMMAND chỉ là một biến môi trường bash đơn giản. Các lệnh trong nó được thực thi trước khi bạn nhận được dấu nhắc bash (dấu $). Ví dụ: PROMPT_COMMAND của bạn là "echo 123" và bạn chạy "ls" trong thiết bị đầu cuối của mình. Hiệu ứng giống như chạy "ls; echo 123".
$ PROMPT_COMMAND="echo 123"
đầu ra (Giống như chạy 'PROMPT_COMMAND = "echo 123"; $ PROMPT_COMMAND'):
123
Chạy như sau:
$ echo 3
đầu ra:
3
123
"history -a" được sử dụng để ghi các lệnh lịch sử trong bộ nhớ vào ~ / .bash_history
"history -c" được sử dụng để xóa các lệnh lịch sử trong bộ nhớ
"history -r" được sử dụng để đọc các lệnh lịch sử từ ~ / .bash_history vào bộ nhớ
Xem giải thích lệnh lịch sử tại đây: http://ss64.com/bash/history.html
PS: Như những người dùng khác đã chỉ ra, xuất khẩu là không cần thiết. Xem: sử dụng xuất trong .bashrc