macos:Bash 显示命令而不是文件

macos: Bash shows commands instead files

当我双 TAB 而不是文件和文件夹时,

Bash 在我的 macOS 上显示来自 $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 终端下的相同行为。所以我相信,问题在更深的地方。

你能帮忙吗?

Command-line Bash 中的完成是通过 readline 实现的,它是许多 GNU 和其他开源产品使用的 well-known 实用程序库。

基本完成是使用{TAB}键,实际完成取决于上下文。如果文本不以特殊字符开头,则在命令匹配时列出命令,只有在命令不匹配时才列出文件名。

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

来自 man bash完成):

Bash 尝试完成将文本视为变量(如果文本 以 $ 开头)、用户名(如果文本以 ~ 开头)、主机名 (如果文本以 @ 开头),或命令(包​​括别名和 功能)依次。如果其中的 none 个匹配,则文件名 尝试完成。