avertissement: modification de ligne non activée

21

J'ai trouvé cette commande utile bind -x '"\C-r"':resetpour effacer le terminal mais je voulais faire un simple script bash:

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

production:

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

Quelqu'un pourrait-il expliquer:

  1. Comment puis-je réparer cela?
  2. Que veut warning: line editing not enableddire?
Alfred
la source
J'ai corrigé cela déjà en utilisant echo -e '\0033\0143'grâce à superuser.com/questions/122911/bash-reset-and-clear-commands/… , mais je voudrais quand même savoir ce que cette erreur signifie et comment y remédier. Merci beaucoup.
Alfred
@squircle merci pour les bonnes améliorations. Pourriez-vous également connaître la réponse à ma question: P?
Alfred
4
Juste pour mémoire (parce que cela n'a pas vraiment été répondu): vous obtenez "l'édition de ligne non activée", car dans le bash qui est généré lorsque vous invoquez votre script, il n'est tout simplement pas activé et vous devez le faire vous-même, .eg en insérant un set -o emacsou set -o vidans votre script (avant le bind, bien sûr).
Elmar Zander

Réponses:

10

Vous devez vous procurer ce script. Faites . ./bindou source ./bindpour activer cette liaison de touches dans la session en cours.

L'exécutant normalement, il n'a pas de terminal, il vous donne donc ce message d'erreur. De plus, si cela devait fonctionner, il ne serait actif que pendant la durée du script.

Si vous souhaitez que cette liaison de touches soit persistante, ajoutez cette commande à votre ~/.bashrc.

En pause jusqu'à nouvel ordre.
la source
1. Je connais la persistance. 2. Votre exemple fonctionne, mais ajoute une commande d'exécution complexe (à mon avis). Je suppose que je le sais maintenant, mais je voudrais avoir un simple fichier bash que je peux exécuter sans cela source.
Alfred
2
@alfredwesterveld: Si vous ne voulez pas que la liaison soit chargée à chaque démarrage d'un shell, mais que vous voulez pouvoir l'activer à tout moment sans avoir à utiliser sourceou dot ( .), ajoutez une fonction à votre ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }alors vous pouvez entrer rbindpar lui-même comme une commande et la liaison sera activée.
pause jusqu'à nouvel ordre.
9

J'avais un message similaire mais le mien provenait d'un script exécuté en dehors d'un shell interactif (de connexion); c'était un script shell exécuté via un script CGI. Mon message était:

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

et bien qu'il ne soit pas réellement sur la ligne 4, le seul binddans ce fichier était:

bind 'set completion-ignore-case on'

ce qui bien sûr n'a de sens que si l'édition de ligne est activée, c'est-à-dire s'il s'agit d'un shell interactif.

Richard Wiseman
la source