找不到mkvirtualenv,但是可以执行

Can't find mkvirtualenv, but can execute it

我正在尝试从 bash 脚本 运行 mkvirtualenv,但我一直被告知无法找到它 - 但我的系统似乎无法决定是否可以找到它。谁能解释为什么我可以从终端执行它,而不是从脚本执行?

jimbo@wavefront:~$ locate mkvirtualenv
jimbo@wavefront:~$ which mkvirtualenv
jimbo@wavefront:~$ mkvirtualenv --version
13.1.2
jimbo@wavefront:~$

因为它是 shell 的附加功能。 运行这个就看吧:

$ type mkvirtualenv

避免使用 which 检查 binaries/etc。它不是标准化的,并不总是可用的,并且本身就是一个外部二进制文件(因此比更好的选择更昂贵)。

更好的选择是typecommand

它们都是 built-ins,都是标准化的(至少在最基本的水平上),并且因为它们是 built-in,所以也可以看到 shell 函数和别名。