Sự khác biệt giữa .bashrc và .inputrc


13

Tôi chưa quen với hệ thống unix và thấy thú vị khi tạo các chức năng và cấu hình tùy chỉnh trong các tệp cài đặt như .bashrc.inputrc.

Tuy nhiên, tôi không hiểu sự khác biệt giữa hai. Ví dụ, khi tôi tạo bí danh, tôi đặt chúng vào .bashrc.

Example 1: alias ...='cd ../../'

Khi tôi tạo các hoạt động như sử dụng phím mũi tên để tìm lệnh trước hoặc tiếp theo, tôi đặt lệnh vào .inputrc.

Example 2: "\e[A": history-search-backward

Tại sao tôi cần đặt chúng trong các tệp cài đặt khác nhau? Làm sao để phân biệt khi nào nên đặt ở đâu?

Cảm ơn bạn trước!

Câu trả lời:


17

Các cài đặt trong .inputrctệp ảnh hưởng đến tất cả các chương trình sử dụng thư viện đường dẫn GNU , không chỉ bash. Hãy nghĩ về .inputrctệp như là một tệp cấu hình cho GNU Readline tương tự như cách .bashrcmột tệp cấu hình cho bash.

GNU Readline được mô tả là:

... Một tập hợp các chức năng được sử dụng bởi các ứng dụng cho phép người dùng chỉnh sửa các dòng lệnh khi chúng được nhập vào.

Để làm rõ hơn một chút, các cài đặt trong .bashrctệp chỉ ảnh hưởng bash. Nếu bạn muốn chạy tùy chọn bashmà không cần hỗ trợ hoặc sử dụng GNU Readline, bạn có thể gọi bashvới --noeditingtùy chọn như sau : bash --noediting. Bạn có thể tìm hiểu thêm về bashcác lựa chọn ở đây .

Để trả lời câu hỏi cuối cùng của bạn về

Làm sao để phân biệt khi nào nên đặt ở đâu?

Nếu bạn muốn một tùy chọn ảnh hưởng đến tất cả các chương trình trên hệ thống của bạn sử dụng thư viện GNU Readline, .inputrcsẽ là lựa chọn chính. Mặt khác, nếu bạn chỉ muốn cấu hình bashphiên của mình , .bashrcsẽ là lựa chọn tốt nhất.


Cảm ơn bạn @aliceinpalth. Bạn có nghĩa là bash thuộc về thư viện GNU Readline? Có gì khác trong thư viện GNU Readline?
Counter10000

5
@ Counter10000 Theo nghĩa này, thư viện không phải là "tập hợp các công cụ" (tôi có thể hiểu tại sao bạn có thể nghĩ như vậy) mà là "một khối chức năng mà các công cụ khác nhau có thể sử dụng". Trong trường hợp này, đó là các chức năng để làm việc với một dòng lệnh (bao gồm cuộn ngược, chỉnh sửa dòng, v.v.). Bash sử dụng điều này cho dấu nhắc shell. Trên hệ thống của tôi ngay trước mặt tôi, nó cũng được sử dụng cho bc(máy tính dòng lệnh), xfsprogs(chương trình quản trị hệ thống tệp), sqlite(hệ thống cơ sở dữ liệu rất nhỏ), lftp(máy khách ftp dòng lệnh), v.v.
mattdm

1
Không có vấn đề gì @ Counter10000! Tôi rất vui lòng giúp đỡ. @mattdm trả lời câu hỏi của bạn rất tốt. Để tìm hiểu thêm về cách các chương trình này sử dụng GNU Readline, có sẵn một bài viết tốt ở đây .
aliceinpalth

1
có vẻ như đoạn cuối trong câu trả lời của bạn ít nhất là không chính xác. Tôi cho rằng có một số tùy chọn, chỉ có thể được đặt trong tệp inputrc, vì vậy hai tệp không hoàn toàn "có thể hoán đổi cho nhau". Tôi cố gắng để thiết lập các tùy chọn từ này câu trả lời trong .bashrcvà không có gì xảy ra. Chúng chỉ có hiệu lực được đặt trong.inputrc
user907860
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.