環境変数のBashオートコンプリート[終了]


25

bashのオートコンプリート機能は、11.04の環境変数では機能しないようです。現在の動作を以下に示します

export SCRIPT=/home/user/script
cd $SCRIPT/<tab>

結果として、バックスラッシュ(\)が追加され$SCRIPTます。つまり、プロンプトは

cd \$SCRIPT/

またはcdで置き換えられたls場合も同じことが起こります

また、$ SCRIPTに含まれるパスに実行可能ファイルがあり、それを実行したい場合

$SCRIPT/<tab>

Bashは、フォルダー内のオプションを表示しません(環境変数に含まれるパス内に単一のファイルがあるか、複数のファイル/ディレクトリがあるかに関係なく)。

つまり、オートコンプリートは環境変数では機能しません。


2
これがlaunchpadバグです。
idbrii

bashバージョン(4.1または4.2)とは関係ないと思います。ソースからbash-4.1をインストールし、4.2.24(Ubuntu 12.04のバージョン。ソースからインストールしたため、各sysアップグレードでパッケージを「控える」必要がない)と動作の代わりに使用しました。まったく同じです。非常に、非常に迷惑な

4
この質問は、サポートされていない古いリリースのバグに関するものであるため、トピック外のようです。バグが記述されているここと12.04以降で修正されました
ウォーレン・ヒル

1
@WarrenHillこれはバグに関するものであるため、トピックから外れている可能性があります(そのため、私はそれを閉じることに投票しました)。ただし、バグがサポートされていないリリースにあることは無関係です。影響を受けるリリースのEoL日付が来たときに、トピック外の回答がある古い質問閉じません。新規/未回答のEoL質問のみがトピック外です。
エリアケイガン

回答:


13

このバグはbash 4.2で導入されました。ここには長いスレッドがあります:

http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.html

要するに、bashの開発者であるChet Rameyは、まだそれを修正する方法がわからないのです。


bash 4.1に戻す方法はありますか?
-nilchat

1
修正が近づいています:Chetは "direxpand"ショップを追加して古い動作を復元します。まだオナイリックではありません。
ネルソン

8
これについて文句を言っている人がほとんどいないのは驚きです。これは、bashが長年にわたって機能してきた方法からの大きな変化です。
スコットCウィルソン

11

古い動作を元に戻すには、次のコマンドを使用します

shopt -s direxpand

またはあなたの .bashrc

異なるバージョンのbashで同じ.bashrcを使用する場合は、

if ((BASH_VERSINFO[0] >= 4)) && ((BASH_VERSINFO[1] >= 2))
    then shopt -s direxpand
fi

1
このテストは、bash 5.0および5.1では失敗します。
キーストンプソン14年

8

http://lists.gnu.org/archive/html/bug-bash/2011-02/msg00274.htmlで提案されている回避策は次のとおりです。

  1. <Tab>コマンドラインが言うあなたの環境変数stを自動補完するために使用しますcd $MYVAR
  2. ヒット<Esc>+ <Ctrl>-E代替つまり現在のコマンドラインを拡大する$MYVAR、その値によって、パスを
  3. を追加して/<Tab>通常どおりオートコンプリートをお楽しみください

これは、emacsモード(set -o emacs)であり、bash_completion適切にセットアップされていることを前提としていますcd(例complete -o nospace -F _cd cd)。

残念ながら、viモード(set -o vi)では機能しません。コマンドラインの展開が利用できないためです。


2

シェル変数を入力した後

cd $SCRIPT/

Cntrl-Alt-Eと入力します。これは変数を展開します

cd /home/user/script/

これはFedora 16のEDITOR = viで機能します。

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