![如果目录名称中包含空格,则自动完成时路径始终为绝对路径](https://linux22.com/image/187461/%E5%A6%82%E6%9E%9C%E7%9B%AE%E5%BD%95%E5%90%8D%E7%A7%B0%E4%B8%AD%E5%8C%85%E5%90%AB%E7%A9%BA%E6%A0%BC%EF%BC%8C%E5%88%99%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E6%97%B6%E8%B7%AF%E5%BE%84%E5%A7%8B%E7%BB%88%E4%B8%BA%E7%BB%9D%E5%AF%B9%E8%B7%AF%E5%BE%84.png)
我使用 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 的其他好处(我个人启用了它,因为我不喜欢$
通过制表符补全来转义)。