Một số trường hợp bash thay đổi lịch sử lệnh khi bạn sử dụng lại và chỉnh sửa lệnh trước đó, những trường hợp khác dường như không. Tôi đã tìm kiếm và tìm kiếm nhưng không thể tìm thấy bất cứ điều gì nói cách ngăn các lệnh trong lịch sử bị sửa đổi khi chúng được sử dụng lại và chỉnh sửa.
Có những câu hỏi như thế này , nhưng dường như nói làm thế nào để đối phó với lịch sử đang được chỉnh sửa. Gần đây tôi chỉ bắt gặp một trường hợp bash có chỉnh sửa lịch sử khi bạn sử dụng lại lệnh - tất cả các bash shell trước đây tôi đã sử dụng (theo như tôi nhận thấy) đã được định cấu hình để không thay đổi lịch sử khi bạn sử dụng lại và chỉnh sửa một lệnh. (Có lẽ tôi đã không chú ý đúng mức đến lịch sử vỏ của mình trong 15 năm qua hoặc lâu hơn ...)
Vì vậy, đó có lẽ là câu hỏi hay nhất: Tôi có thể nói bash KHÔNG BAO GIỜ sửa đổi lịch sử - và nếu vậy, làm thế nào?
set revert-all-at-newline on
trong câu hỏi bạn liên kết giải quyết vấn đề của bạn? Bạn có thể chỉ ra cách tái tạo vấn đề? Lưu ý rằng bạn cũng có thể sử dụng zsh
cho một hành vi nội tuyến hơn với những gì bạn muốn.
history -p
có phải tôi sẽ phải làm gì cho mọi lệnh mà tôi muốn sử dụng lại - đúng không? Nếu vậy, đó không hoàn toàn là những gì tôi đang tìm kiếm. Như tôi đã đề cập, tôi đã sử dụng các trường hợp bash không bao giờ sửa đổi lịch sử khi một lệnh được sử dụng lại và chỉnh sửa.
revert-all-at-newline
là thứ tôi cần. Nếu tôi chỉnh sửa lệnh và nhấn CTRL-C để hủy lệnh, tôi cũng không muốn điều đó ảnh hưởng đến lịch sử. Trước đây tôi chưa bao giờ phải cấu hình bash để không sửa đổi lịch sử, đó là một phần lý do khiến tôi bối rối vì tại sao đôi khi một bản cài đặt mới lại hoạt động theo cách này và đôi khi theo cách khác. Nhân tiện, trong trường hợp không chỉnh sửa lịch sử sử dụng lại lệnh, một bind -V | grep revert
dấu hiệu revert-all-at-newline
được đặt thành 'tắt'.
bash
. Đó là tất cả về readline. Có nhiều cách triển khai readline
thư viện khác nhau và nó cũng có một bộ cài đặt riêng (RẤT NHIỀU trong số chúng) và tệp cấu hình riêng. Tôi không chắc chắn chính xác nếu đây là một cài đặt hoặc chỉ đơn giản là một sự khác biệt triển khai, nhưng bạn nên tìm kiếm trong tài liệu liên quan đến đường đọc, không phải bash.
history -p
để thực hiện mở rộng lịch sử mà không ảnh hưởng đến tệp lịch sử. Bạn có thể làmhistory -s
để làm tương tự và nối thêm vào lịch sử mà không cần thực thi. Bạn có thể làmHISTIGNORE='start of a command I never want in history.*:command2.*'
để giữ các lệnh nhất định ra khỏi lịch sử.