bashでは、echoコマンドの後に配置すると、環境変数は正しくタブ展開されます。次に例を示します。
echo $HOME
しかし、cdまたはcatの後、bashは次のように$記号の前に\を配置します。
cd \$HOME
コマンドの2番目の引数として変数を使用すると、展開されません。
cp somefile $HOM
.bashrcまたは.inputrcファイルにこのような悩みを引き起こしている不思議なオプションは何ですか?
bashでは、echoコマンドの後に配置すると、環境変数は正しくタブ展開されます。次に例を示します。
echo $HOME
しかし、cdまたはcatの後、bashは次のように$記号の前に\を配置します。
cd \$HOME
コマンドの2番目の引数として変数を使用すると、展開されません。
cp somefile $HOM
.bashrcまたは.inputrcファイルにこのような悩みを引き起こしている不思議なオプションは何ですか?
あなたが説明しているのは、bash 4.2 で導入された「機能」です。したがって、苦痛を引き起こす不思議なオプションはありませんが、「意図した」動作だけです。
私は以前の方法を好み、以前の動作を取り戻すための構成オプションをまだ見つけていないため、これは非常に面倒です。他の回答で示唆されているようにオプションをいじっcomplete
ても、どこにも行きませんでした。
complete -r cdを試して、多くの Linux ディストリビューションがコマンド用にインストールする特別なプログラム補完機能を削除してくださいcd
。この関数は、CDPATH 変数で指定されたディレクトリのリストの検索を のタブ補完に追加しますcd
が、デフォルトの補完動作を壊すという犠牲を払っています。
詳細については、 http: //www.gnu.org/software/bash/manual/bashref.html#Programmable-Completion を参照してください。
2 番目の例では、タブの前に ESC を押して解決できます。
問題の解決策はわかりませんが、/etc/bash_completionまたは /etc/bash_completion.d の下のファイルを調べて、オートコンプリートを使用するコマンドとその方法を判断できます。
help complete
役立つこともあります。
Bash リファレンス マニュアルには、拡張エラッタについて必要以上の情報が含まれています。
セクション 8.7が出発点のようです。特に「完全」機能に関する情報を提供します。
4年前の質問に答えます!素晴らしい!
これは、意図せずに v4.2 で導入され、長い間気づかれていなかった bash のバグ/機能です。これは、このトレッドで geirha によって指摘されました。ここで意図しない機能として確認されました
自宅でUbuntuを実行しているときに、この問題に遭遇しました。職場では bash-3.00 を使用しているので、何が起こっているのかを確認するために時間をかけてブラウジングしました。「ダウングレード」できるかな…。