如果将绝对路径$/usr/bin/python的别名设置为同一路径,那么指定绝对路径$/usr/bin/python的结果如何与$python不同?

如果将绝对路径$/usr/bin/python的别名设置为同一路径,那么指定绝对路径$/usr/bin/python的结果如何与$python不同?,python,bash,alias,absolute-path,jcc,Python,Bash,Alias,Absolute Path,Jcc,我试图makePyLucene,它有一个必需的依赖项JCC。(JCC是一个用于从Python调用Java的代码生成器。) 注意:操作系统是Mac OS X 10.7.4 包含的make脚本运行: $ /usr/bin/python -m jcc 输出: /usr/bin/python: No module named jcc /usr/bin/python 但运行以下操作是成功的: $ python -m jcc 即使python指向/usr/bin/python: $ whereis

我试图
make
PyLucene,它有一个必需的依赖项JCC。(JCC是一个用于从Python调用Java的代码生成器。)

注意:操作系统是Mac OS X 10.7.4

包含的make脚本运行:

$ /usr/bin/python -m jcc
输出:

/usr/bin/python: No module named jcc
/usr/bin/python
但运行以下操作是成功的:

$ python -m jcc
即使python指向/usr/bin/python:

$ whereis python
输出:

/usr/bin/python: No module named jcc
/usr/bin/python

python
别名指向
/usr/bin/python
时,这些结果会有什么不同呢?

试着在这两者上运行
python--version
,看看它们是否相同。

您的问题可能是哈希表。Bash保留一个记忆命令表-它不会每次搜索
$PATH
。如果在设置
别名之前调用了
python
,则将使用哈希表。我的理解是,在搜索哈希表之前,别名会被扩展,但手册页对此并不清楚

通过使用
hash
命令列出哈希表来检查这一点。使用
hash-dpython
重置哈希表


然而,我注意到您正在使用
make
,尽管您的示例是命令行。别名不是由子进程继承的(默认情况下),如果它继承了别名,可能会成为一场支持噩梦。因此,
make
没有使用您的别名。

whereis
在特定目录列表(在man中列出)中搜索源代码/二进制文件和手册部分,我建议您执行
which python
,它只在$PATH中搜索二进制文件,以确定正在使用哪个python