警告:行編集は有効になっていません


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意味ですか?

superuser.com/questions/122911/bash-reset-and-clear-commands/…のecho -e '\0033\0143'おかげで既にこれを修正しましたが、このエラーの意味と修正方法を知りたいです。どうもありがとう。
アルフレッド

@squircle良い改善をありがとう。私の質問への答えを知っているかもしれません:P?
アルフレッド

4
記録のために(これは実際には回答されていないため):「ライン編集が有効になっていません」というメッセージが表示されます。スクリプトを呼び出すときに生成されるbashでは、スクリプトが有効になっていないため、 .eg set -o emacsまたはset -o viをスクリプトに挿入します(bindもちろん、の前に)。
エルマーザンダー

回答:


10

そのスクリプトを入手する必要があります。やる. ./bindか、source ./bind現在のセッションでアクティブなバインディングそのキーを作成します。

正常に実行すると、端末がないため、そのエラーメッセージが表示されます。また、機能する場合は、スクリプトの実行中のみアクティブになります。

そのキーバインディングを永続的にしたい場合は、そのコマンドをに追加します~/.bashrc


1.永続性について知っています。2.あなたの例は動作しますが、コマンドを実行する複雑さを追加します(私の意見)。私は今これを知っていると思いますが、これなしで実行できるシンプルなbashファイルが欲しいsourceです。
アルフレッド

2
@alfredwesterveld:あなたはしたくない場合は、シェルを起動していますが、使用しなくても、それをいつでもアクティブにできるようにしたいたびにロードされた結合sourceまたは(ドット.、あなたに機能を追加)~/.bashrcrbind () { 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'

もちろん、これは行編集が有効になっている場合、つまり対話型シェルの場合にのみ意味があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.