Làm thế nào để lệnh lịch sử làm việc?


8

Khi tôi gõ bất kỳ lệnh nào trong thiết bị đầu cuối, nó sẽ không xuất hiện trong ~/.bash_historytệp của tôi cho đến khi tôi thoát phiên.

Ngoài ra, khi tôi chỉnh sửa thủ công ~/.bash_historytệp của mình (ví dụ: tôi xóa ba lệnh cuối cùng), khi tôi nhập, historynó vẫn hiển thị các lệnh mà tôi đã xóa khỏi ~/.bash_historytệp. Chỉ khi tôi thoát phiên của mình và đăng nhập lại thì chúng mới biến mất.

Làm thế nào để ~/.bash_historytập tin của tôi và historylệnh được đồng bộ hóa?



"Khi tôi gõ bất kỳ lệnh nào trong thiết bị đầu cuối" Không thực sự đúng. Khi bạn đặt một khoảng trắng phía trước lệnh theo mặc định, nó không lưu lệnh đó.
Rinzwind

@Rinzwind hành vi lưu lệnh ngay cả khi nó có khoảng trắng ở phía trước có thể được thay đổi bằng cách chỉnh sửa giá trị của biến môi trường HISTCONTROL của bạn.
sys0dm1n

@ sys0dm1n "theo mặc định"
Rinzwind

Câu trả lời:


10

Khi bạn mở một bash terminal, nó sẽ tải nội dung ~/.bash_historyvà xây dựng lịch sử của shell đang hoạt động (trong RAM), thêm mọi lệnh được thực thi trong shell đó vào nó - và chỉ cho nó chứ không phải vào tệp.

Chỉ khi bạn đóng thiết bị đầu cuối bash, lịch sử của nó mới được thêm vào ~/.bash_historytệp của bạn .


Tùy chọn của history:

history -a # save the active shell's history to ~/.bash_history (appending)
history -c # clear the active shell's history
history -d NNN # delete row NNN of the active shell's history
history -r # reload the active shell's history from ~/.bash_history (appending)
history -w # save the active shell's history to ~/.bash_history (overwriting)

Tùy chọn cho ~/.bashrctập tin

Nếu bạn muốn thay đổi hành vi này để lịch sử tạm thời được lưu ~/.bash_historytrực tiếp sau khi thực hiện lệnh, hãy thêm dòng này:

PROMPT_COMMAND="history -a"

Nếu bạn cũng muốn mọi thiết bị đầu cuối tự động tải ~/.bash_historytệp sau mỗi lần thực hiện lệnh, thay vào đó hãy thêm dòng này:

PROMPT_COMMAND="history -a; history -c; history -r"

Nếu bạn muốn loại trừ các lệnh nhất định (ví dụ: mọi thứ bắt đầu bằng sudocat) khỏi được lưu, hãy thêm dòng này:

HISTIGNORE="sudo*:cat*"
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.