shell:命令未找到,虽然它在路径中

时间:2017-07-31 20:18:18

标签: shell hash path-variables

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

我正在使用ubuntu 16.04。 这是我的PATH,其中包含/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

但是当我打电话给他们时,找不到phpunit althogh composer ...自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

当我用哪个命令所说的整个路径调用它时,它可以工作....

$ /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'
我在这里错过了一些东西吗?

1 个答案:

答案 0 :(得分:1)

删除bash的可执行文件位置哈希

运行 hash phpunit

说明:

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

现在它已移至/usr/local/bin/

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

查看this ServerFault answer了解详情。