警告:未启用行编辑


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/...,但我还是想知道这是什么错误的手段,以及如何解决这个问题。非常感谢。
阿尔弗雷德(Alfred)

@squircle感谢您的良好改进。您可能也知道对我的问题的回答:P?
阿尔弗雷德(Alfred)

4
仅作记录(因为尚未真正回答):您将获得“未启用行编辑”,因为在调用脚本时产生的bash中,该bash并未启用,您必须自己进行操作,例如,通过在脚本中插入set -o emacsset -o vibind当然在之前)。
Elmar Zander

Answers:


10

您需要获取该脚本。执行. ./bindsource ./bind使该键绑定在当前会话中处于活动状态。

正常运行,它没有终端,因此它会向您显示错误消息。另外,如果它能正常工作,那么它将仅在脚本期间有效。

如果您希望该键绑定是持久的,则将该命令添加到您的中~/.bashrc


1.我知道持久性。2.您的示例确实有效,但是增加了运行命令的复杂度(我认为)。我想我现在知道这一点,但是我想有一个简单的bash文件,如果没有这个我可以运行它source
阿尔弗雷德·

2
@alfredwesterveld:如果您不希望结合加载每次启动一个shell,但你希望能够激活它的任何时间,而不必使用source或点(.)函数添加到您的~/.bashrcrbind () { bind -x '"\C-r"':reset; }那么你可以进入rbind由本身作为命令,绑定将被激活。
暂停,直到另行通知。

9

我也有类似的消息,但是我的消息来自于在交互式(登录)shell外部运行的脚本。它是一个通过CGI脚本运行的Shell脚本。我的留言是:

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

尽管实际上不在第4行上,但bind该文件中唯一的是:

bind 'set completion-ignore-case on'

当然,只有启用了行编辑(即,它是交互式外壳)才有意义。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.