предупреждение: редактирование строки не включено

21

Я нашел эту полезную команду bind -x '"\C-r"':resetдля очистки терминала, но я хотел сделать простой скрипт bash:

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

выход:

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

Может ли кто-нибудь объяснить, пожалуйста:

  1. Как я могу это исправить?
  2. Что warning: line editing not enabledзначит?
Альфред
источник
Я это исправил уже используется echo -e '\0033\0143'благодаря superuser.com/questions/122911/bash-reset-and-clear-commands/... , но я все еще хотел бы знать , что это означает , что ошибки и как это исправить. Большое спасибо.
Альфред
@squircle спасибо за хорошие улучшения. Можете ли вы также знать ответ на мой вопрос: P?
Альфред
4
Просто для записи (потому что на самом деле это не было ответа): вы получаете «редактирование строки не включено», потому что в bash, который создается при вызове сценария, он просто не включен, и вы должны сделать это самостоятельно, .eg, вставив set -o emacsили set -o viв ваш скрипт (перед bind, конечно же).
Эльмар Цандер

Ответы:

10

Вам нужно найти этот скрипт. Сделайте . ./bindили source ./bindчтобы активировать привязку клавиш в текущем сеансе.

При нормальном запуске он не имеет терминала, поэтому выдает это сообщение об ошибке. Кроме того, если бы он работал, он был бы активен только на время действия сценария.

Если вы хотите, чтобы эта привязка клавиш была постоянной, добавьте эту команду к себе ~/.bashrc.

Приостановлено до дальнейшего уведомления.
источник
1. Я знаю о настойчивости. 2. Ваш пример работает, но добавляет сложность выполнению команды (на мой взгляд). Я думаю, что теперь я знаю это, но я хотел бы иметь простой файл bash, который я могу запустить без этого source.
Альфред
2
@alfredwesterveld: Если вы не хотите, чтобы привязка загружалась при каждом запуске оболочки, но вы хотите иметь возможность активировать ее в любое время без использования sourceили точки ( .), добавьте функцию в свой ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }тогда вы можете войти с rbindпомощью сама как команда и привязка будет активирована.
Приостановлено до дальнейшего уведомления.
9

У меня было похожее сообщение, но мое было из сценария, запускаемого вне интерактивной оболочки (логин); это был сценарий оболочки, запускаемый через сценарий CGI. Мое сообщение было:

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

и хотя это не было на самом деле в строке 4, единственным bindв этом файле было:

bind 'set completion-ignore-case on'

что, конечно, имеет смысл, только если редактирование строки включено, т.е. если это интерактивная оболочка.

Ричард Уайзман
источник