cảnh báo: không bật chỉnh sửa dòng


21

Tôi đã tìm thấy lệnh hữu ích này bind -x '"\C-r"':resetđể xóa thiết bị đầu cuối nhưng tôi muốn tạo một tập lệnh bash đơn giản:

#!/bin/bash
bind -x '"\C-r"':reset

đầu ra:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled

Ai đó có thể vui lòng giải thích:

  1. Làm thế nào tôi có thể sửa lỗi này?
  2. warning: line editing not enablednghĩa là gì?

Tôi đã sửa lỗi này bằng cách sử dụng echo -e '\0033\0143'nhờ superuser.com/questions/122911/bash-reset-and-clear-commands/ , nhưng tôi vẫn muốn biết lỗi này có nghĩa là gì và cách khắc phục lỗi này. Cảm ơn nhiều.
Alfred

@squircle cảm ơn vì những cải tiến tốt. Có thể bạn cũng biết câu trả lời cho câu hỏi của tôi: P?
Alfred

4
Chỉ dành cho bản ghi (vì điều này chưa thực sự được trả lời): bạn nhận được "chỉnh sửa dòng không được bật", bởi vì trong bash được sinh ra khi bạn gọi tập lệnh của mình, nó chỉ đơn giản là không được kích hoạt và bạn phải tự thực hiện, .eg bằng cách chèn một set -o emacshoặc set -o vivào tập lệnh của bạn ( binddĩ nhiên là trước tập lệnh ).
Elmar Zander

Câu trả lời:


10

Bạn cần nguồn kịch bản đó. Làm . ./bindhoặc source ./bindđể làm cho ràng buộc chính đó hoạt động trong phiên hiện tại.

Chạy bình thường, nó không có thiết bị đầu cuối nên nó cung cấp cho bạn thông báo lỗi đó. Ngoài ra, nếu nó hoạt động, nó sẽ chỉ hoạt động trong suốt thời gian của tập lệnh.

Nếu bạn muốn khóa đó liên tục, hãy thêm lệnh đó vào ~/.bashrc.


1. Tôi biết về sự kiên trì. 2. Ví dụ của bạn không hoạt động, nhưng thêm lệnh chạy phức tạp (theo ý kiến ​​của tôi). Tôi đoán bây giờ tôi biết điều này, nhưng tôi muốn có một tệp bash đơn giản mà tôi có thể chạy mà không cần cái này source.
Alfred

2
@alfredwesterveld: Nếu bạn không muốn ràng buộc nạp mỗi khi bạn bắt đầu một vỏ, nhưng bạn muốn để có thể kích hoạt nó bất cứ lúc nào mà không cần phải sử dụng sourcehoặc chấm ( .), thêm một chức năng để bạn ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }sau đó bạn có thể nhập rbindbằng chính nó như là một lệnh và ràng buộc sẽ được kích hoạt.
Tạm dừng cho đến khi có thông báo mới.

9

Tôi đã có một tin nhắn tương tự nhưng của tôi là từ một kịch bản được chạy bên ngoài lớp vỏ tương tác (đăng nhập); nó là một tập lệnh shell được chạy thông qua tập lệnh CGI. Tin nhắn của tôi là:

/home/richard/.bash_profile: line 4: bind: warning: line editing not enabled

và mặc dù nó không thực sự nằm trên dòng 4, nhưng chỉ có bindtrong tệp đó là:

bind 'set completion-ignore-case on'

tất nhiên điều này chỉ có ý nghĩa nếu chỉnh sửa dòng được bật, tức là nếu đó là một vỏ tương tác.

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.