【问题标题】:macos: Bash shows commands instead filesmacos:Bash 显示命令而不是文件
【发布时间】:2018-04-01 22:13:22
【问题描述】:

当我使用双 TAB 而不是文件和文件夹时,我的 macOS 上的 Bash 会显示来自 $PATH 的所有(可能)命令。当我可以使用 TAB 一次时也是如此 - 它根本不起作用。 CD 之类的命令可以正常工作。

我不知道问题出在哪里 - $PATH 对我来说似乎很正常:

/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

~/.profile 是这样的:

export PATH=/usr/local/php5/bin:$PATH
export PATH="$HOME/.yarn/bin:$PATH"

~/.bash_profile 只有这个:

export PATH="/usr/local/sbin:$PATH"

PhpStorm 终端下的行为相同。所以我相信,问题在更深的地方。

你能帮忙吗?

【问题讨论】:

  • 如果您不键入任何其他内容而只是按两次 Tab,则预期的行为是获取命令列表而不是文件。这是因为您填写的是命令名而不是文件名。
  • 也就是说,文件和文件夹会在命令名ls -l {tab}{tab}后出现双标签

标签: bash macos path bin macos-high-sierra


【解决方案1】:

Bash 中的命令行补全是通过 readline 实现的,这是许多 GNU 和其他开源产品使用的知名实用程序库。

基本补全是使用 {TAB} 键,实际补全取决于上下文。如果文本不以特殊字符开头,则如果它们匹配,则会列出命令,仅当命令不匹配时才会列出文件名。

如果可以完成,则提供足够的字符以使完成唯一,然后完成,否则第二个 {TAB} 将给出可能性列表。

来自man bash正在完成):

Bash 尝试完成将文本视为变量(如果文本 以 $ 开头)、用户名(如果文本以 ~ 开头)、主机名 (如果文本以 @ 开头),或命令(包​​括别名和 功能)依次。如果这些都不产生匹配,则文件名 正在尝试完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多