私は以下を行うために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の他の利点を失うことを意味します(私はタブの完成から逃げるのが好きではないので個人的にアクティブにします$
)。