为什么在bash中反斜杠?

use*_*107 6 bash ubuntu bash-completion

我在〜/ .bashrc中导出了一个变量,如下所示(后跟source~/.bashrc)

export w=/home/user/workspace/
Run Code Online (Sandbox Code Playgroud)

当我在命令行上时,我尝试以下列方式访问$ w的子目录

user$ vi $w/
Run Code Online (Sandbox Code Playgroud)

在此之后,当我按Tab键时,会出现一个神秘的反斜杠

user$ vi \$w/
Run Code Online (Sandbox Code Playgroud)

它禁用进一步的制表符完成.为什么?可能不vi具体,因为它甚至发生ls.

Bash版本4.2.24(1)-release(i686-pc-linux-gnu)运行Ubuntu 11.04

编辑 解决方法:在点击选项卡之前按Esc + Ctrl + E.

Mu *_*ind 4

Bash 有点聪明,但没那么聪明。它无法扩展您的变量,然后使用制表符完成到计算结果的任何目录。所以这不是反斜杠“禁用”制表符补全,而是 bash 找不到任何补全建议的事实。

如果您的路径中确实有环境变量,则补全不会对您有帮助,补全对您有帮助的唯一方法是您打算键入文字美元符号。我认为 bash 只是过于热心地试图完成某件事。

尽管如此,我仍将其称为错误,因为在您的情况下,它不仅无法完成,而且还改变了您键入的内容的含义。