找不到命令,尽管它在 $PATH 中

Command not found, although it is in the $PATH

我的系统没有找到 phpunit,虽然它肯定在我的 $PATH.

我正在使用 ubuntu 16.04。 这是我的路径,其中包含 /usr/local/bin

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

composerphpunit 都在同一目录中:

$ which composer;which phpunit
/usr/local/bin/composer
/usr/local/bin/phpunit

但是当我打电话给他们时,虽然找到了 composer,但找不到 phpunit...既然找到了 composer,我的路径应该没问题...

$ composer --version;phpunit --version
Composer version 1.4.2 2017-05-17 08:17:52
-bash: /usr/bin/phpunit: Datei oder Verzeichnis nicht gefunden

当我用 which 命令所说的整个路径调用它时,它起作用了....

$ /usr/local/bin/phpunit --version
PHPUnit 6.2.3 by Sebastian Bergmann and contributors.

而且我没有别名:

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

我是不是遗漏了什么?

删除 bash 的可执行文件位置散列

运行 hash phpunit

解释:

/usr/bin/ 文件夹中有一个 phpunit 二进制文件(从错误消息中可以看出)。

现已移至 /usr/local/bin/

但是 bash 存储了以前找到的可执行文件的位置并且不会立即更新它们,因此应该清除旧的 /usr/bin/phpunit 位置以便找到新的位置。

查看 this ServerFault answer 了解更多信息。