
Encontré este comando útil bind -x '"\C-r"':reset
para borrar la terminal, pero quería crear un script bash simple:
#!/bin/bash
bind -x '"\C-r"':reset
producción:
alfred@alfred-laptop:~/bash$ ./bind
./bind: line 2: bind: warning: line editing not enabled
¿Alguien podría explicarme?
- ¿Cómo puedo arreglar esto?
- ¿Que
warning: line editing not enabled
significa?
Respuesta1
Necesitas obtener ese script. Haga . ./bind
o source ./bind
para activar esa combinación de teclas en la sesión actual.
Ejecutándolo normalmente, no tiene terminal por lo que te da ese mensaje de error. Además, si funcionara, solo estaría activo mientras dure el script.
Si desea que esa combinación de teclas sea persistente, agregue ese comando a su archivo ~/.bashrc
.
Respuesta2
Recibí un mensaje similar, pero el mío provenía de un script que se ejecutaba fuera de un shell interactivo (inicio de sesión); era un script de shell que se ejecutaba mediante 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 bind
en ese archivo era:
bind 'set completion-ignore-case on'
lo cual, por supuesto, sólo tiene sentido si la edición de líneas está habilitada, es decir, si se trata de un shell interactivo.
Respuesta3
Solo intento mejorar la respuesta aceptada.
Obtiene " line editing not enabled
" cuando se ejecuta en un shell no interactivo, porque bind
requiere un TTY.
Envuelva sus bind
comandos en un cheque como este:
if [ -t 1 ]
then
# standard output is a TTY
bind -x '"\C-r"':reset
fi
Respuesta4
En su lugar, probaría si el Shell es interactivo.
Aquí hay un bloque de código que encontré en el archivo bashrc de mi distribución.
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
# if [[ $- != *i* ]] ; then
# # Shell is non-interactive. Be done now!
# return
# fi