ディレクトリ名にスペースが含まれている場合、オートコンプリート時のパスは常に絶対パスです。

ディレクトリ名にスペースが含まれている場合、オートコンプリート時のパスは常に絶対パスです。

私は以下を行うためにbash 5.0.17を使用しています。

$ cd /tmp
$ mkdir 'A B'
$ touch 'A B/C.txt'
$ ls A\ B/C<TAB>

ls A\ B/C.txt最後の項目を(相対)で自動完成したかったのですが、ls /tmp/A\ B/C.txt代わりに(絶対)で自動完成されます。相対パスで自動補完する方法はありますか?

これは、スペースを含むディレクトリ名をハードコードするサードパーティ製のソフトウェアを使用するためのものなので、単にディレクトリ名にスペースを使用することはできません。

答え1

この動作はアクティベーションに由来するようですdirexpand。 bashrcには次のものがあります。

shopt -s direxpand

その行を削除するか、に変更する必要がありますshopt -u direxpand。残念ながら、これはdirexpandの他の利点を失うことを意味します(私はタブの完成から逃げるのが好きではないので個人的にアクティブにします$)。

関連情報