advertencia: edición de línea no habilitada

21

Encontré este comando útil bind -x '"\C-r"':resetpara borrar el terminal, pero quería hacer un script bash simple:

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

salida:

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

¿Podría alguien explicarme:

  1. ¿Cómo puedo arreglar esto?
  2. Que warning: line editing not enabledsignifica
Alfredo
fuente
Ya lo arreglé usando echo -e '\0033\0143'gracias a superuser.com/questions/122911/bash-reset-and-clear-commands/… , pero todavía me gustaría saber qué significa este error y cómo solucionarlo. Muchas gracias.
Alfred
@squircle gracias por buenas mejoras. ¿También podría saber la respuesta a mi pregunta: P?
Alfred
44
Solo para el registro (porque esto realmente no ha sido respondido): obtienes "la edición de línea no está habilitada", porque en el bash que se genera cuando invocas tu script simplemente no está habilitado y tienes que hacerlo tú mismo, .eg insertando un set -o emacso set -o vien su script (antes del bind, por supuesto).
Elmar Zander

Respuestas:

10

Necesitas obtener ese script. Haga . ./bindo source ./bindpara activar ese enlace de teclas en la sesión actual.

Al ejecutarlo normalmente, no tiene una terminal, por lo que le da ese mensaje de error. Además, si funcionara, solo estaría activo mientras dure el script.

Si desea que la combinación de teclas sea persistente, agregue ese comando a su ~/.bashrc.

Pausado hasta nuevo aviso.
fuente
1. Sé sobre la persistencia. 2. Su ejemplo funciona, pero agrega complejidad ejecutando el comando (en mi opinión). Supongo que ahora sé esto, pero me gustaría tener un archivo bash simple que pueda ejecutar sin esto source.
Alfred
2
@alfredwesterveld: si no desea que se cargue el enlace cada vez que inicia un shell, pero desea poder activarlo en cualquier momento sin tener que usar sourceo dot ( .), agregue una función a su ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }entonces puede ingresar rbindpor a sí mismo como un comando y el enlace se activará.
Pausado hasta nuevo aviso.
9

Tenía un mensaje similar pero el mío era de un script que se ejecutaba fuera de un shell interactivo (inicio de sesión); era un script de shell que se ejecutaba a través de un script CGI. Mi mensaje fue:

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

y aunque en realidad no estaba en la línea 4, el único binden ese archivo era:

bind 'set completion-ignore-case on'

lo cual, por supuesto, solo tiene sentido si la edición de línea está habilitada, es decir, si se trata de un shell interactivo.

Richard Wiseman
fuente