コマンドラインには次のように記述します:
ln -sf $PWD/wine-
そしてTabファイル名を補完するために を押します。Ubuntuの以前のバージョンでは、これでファイル名を補完できましたwine-
(そして副作用として$PWD
その時点で展開されました)。しかし今は
ln -sf \$PWD/wine-
これは私が意図したこととは全く異なり、ファイルが文字通り で始まっていないため、何も完了しません$
。
完了を、より破損の少ない動作に戻すにはどうすればよいですか?
set
現在の設定は次のとおりです:
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
答え1
私はそれを見つけましたbash バージョン >= 4.2.29新しいdirexpand
ショップ設定があります。(man docs/bash.1
新しいbashをチェックするか、bash.1 8951行目から)
Quantal Quetzal 12.10 を使用する場合、または新しい bash を入手 (またはチェックアウトしてビルド) する場合は、次のようになります。
shopt -s direxpand
私が望み、必要とし、愛する行動を与えてくれます。
回避策: とりあえず、 の代わりにCtrl+ Alt+ を使用すると、必要な処理が実行されます。ただし、扱いにくいです。ETab
ところで、「bashタブ変数の拡張に関する質問?」というスレッドがいくつかあります。gnu.bash.バグそれらを読んで、ここに情報を見つけました。
答え2
shopt -u progcomp
これで問題は解決しました。また、多くの「インテリジェント」な補完オプションも削除されました。これらのオプションは、特定のコマンドの引数として必要ないと愚かな人が判断したために、存在がわかっているファイルを補完しないという邪魔になることがわかりました。ARRRGH
答え3
_filedir()
トップレベルのbash_completionスクリプトを検索し、次の行を変更します。
compopt -o filenames 2>/dev/null
に
compopt -o filenames -o noquote 2>/dev/null
答え4
12.04 を使用している場合 (私のような場合)、$PWD の代わりに ~+ を使用できます...
例えば :
cd /bin
echo ~+/ls
/bin/ls