40

Ubuntu 11.04を実行していますが、変数で始まるパスのbashでタブ補完を使用しようとすると、奇妙な動作が見られます。TOP = / strikeを持っていて、タブコンプリートしようとした場合:

cd $ TOP / foo

次のように変更されます。

cd \ $ TOP / foo

cd $ TOP/foobarまたはcd/strike / foobarに完了することをお勧めしますが、行を変更せず、$のエスケープを解除する必要があるだけで解決します。

誰かがbash/readlineのどこでこれを修正する必要があるか知っていますか?

4

3 に答える 3

38

バグレポートを見つけました。登録して(まだ登録されていない場合)、「影響を受ける人々」リストに自分を追加してください。

https://bugs.launchpad.net/ubuntu/+source/bash/+bug/778627

回避策

有効にしてみてくださいdirexpandまたはcdable_vars

shopt -s direxpand
# or
shopt -s cdable_vars

どうやらEscTab回避策かもしれません

これに対する適切な解決策は見つかりませんでしたが、回避策があります。環境変数のエスケープは、Escキーを押してからTabキーを押すことで無効にできます。

# cd $SO + [Esc] + [Tab]
# cd $SOME_DIR

バグとして確認してください!同じことが機能することを確認しました

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick

私は(最新の)nattyで壊れた振る舞いをします:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.04
Release:    11.04
Codename:   natty

スラッシュをエスケープしないことを追加する必要がありますが、パス(有効、既存、アクセス可能、読み取り可能)は拡張されていません。

情報:https ://help.ubuntu.com/community/ReportingBugs

于 2011-06-20T23:23:35.690 に答える
13

bugs.launchpad.netの他の回答で参照されているバグレポートは、次のコマンドを発行することで新しい回避策を提供します。

shopt -s direxpand

わたしにはできる。

于 2013-09-05T13:22:58.800 に答える
0

cygwin(NT-6.1 2.0.1 2015-04-30)bash(GNU 4.3.33)でも同様の問題が発生していました。特に、スペースを含むパスをタブ展開しようとした場合はそうです。

shopt -s direxpand〜/.bashrcを入れました。問題が解決しました。

于 2015-05-18T17:19:33.553 に答える