попередження: редагування рядків не ввімкнено


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
Тільки для запису (тому що на це насправді не відповіли): ви отримуєте "редагування рядків не ввімкнено", тому що в баші, що породжується при виклику сценарію, його просто не ввімкнено, і ви повинні зробити це самостійно, .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'

що, звичайно, має сенс лише якщо включено редагування рядків, тобто якщо це інтерактивна оболонка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.