
最近、システムにFedora Core 15をインストールしましたが、理解できない動作の変化を経験しました。 $ HOME変数を使用しない限り、BASHシェルでTab-Completeを使用すると問題はありません。
と入力すると、cd $HOME/d
TAB正しいディレクトリ(doc)がオートコンプリートされますが、以前のディレクトリも挿入されるため、\
結果はですcd \$HOME/doc
。これはそのパスが存在しないため失敗します。
エラーは次のとおりです。
bash: cd: $HOME/doc: そのファイルやディレクトリはありません。
Tab-Completeを使用しないと、$ HOMEはまだ正しいディレクトリを指しているので機能します。この追加アイテムはどこから来て、どのように\
取り除くのですか?
答え1
このコマンドを実行すると、すべてのcomplete
完了定義のリストが表示されます。その後/etc/bash_completion
、どこかで問題のある定義を検索できます/etc/bash_completion.d
。.bash_completion
おそらくホームディレクトリにもいくつかあります。私のシステムでは$HOME
変数は正しく完了しましたが、何もできません。
~
代わりに試してみました$HOME
か?入力が簡単で、期待通りに動作します。
答え2
オプションがあります
shopt -s direxpand
Bash 4.1では機能しないため(この互換性のない機能はBASH 4.2に追加されました)、次のように使用します。
[[ $BASH_VERSION =~ ^4.[2-9] ]] && shopt -s direxpand