【问题标题】:Why the backslash in bash? [closed]为什么bash中的反斜杠? [关闭]
【发布时间】:2012-10-09 04:13:03
【问题描述】:

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

export w=/home/user/workspace/

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

user$ vi $w/

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

user$ vi \$w/

它会禁用进一步的制表符补全。为什么?可能不是 vi 特定的,因为即使使用 ls 也会发生。

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

编辑 Workaround:在按 Tab 之前按 Esc+Ctrl+E。

【问题讨论】:

  • 可能是您的发行版的完成包中的一个错误。如果您指出哪个 Bash 版本和 Linux 发行版版本会有所帮助。
  • 在带有 bash 4.2.24 和 bash-completion 1:1.3-1ubuntu8 的 Ubuntu 12.04 上发生在我身上。
  • @tripleee 为问题添加了详细信息。
  • 不是真的离题,而是复制到另一个 SE 站点(参见@user13107 的评论)

标签: bash ubuntu bash-completion


【解决方案1】:

Bash 有点聪明,但没那么聪明。它无法扩展您的变量,then 选项卡完成到任何评估的目录。所以这不是反斜杠“禁用”选项卡补全,而是 bash 找不到任何补全建议的事实。

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

不过,我还是称其为错误,因为在您的情况下,它不仅无法完成,而且还会改变您输入的内容的含义。

【讨论】:

    猜你喜欢
    • 2012-10-18
    • 2016-03-12
    • 2019-11-19
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2021-11-16
    • 2017-02-25
    • 2019-01-28
    相关资源
    最近更新 更多