我尝试openscad
从命令行运行,但它抛出一个错误,但如果我输入报告的整个路径,它似乎可以正常工作,如下所示。
[dataproc@Euclid ~]$ which openscad
/usr/bin/openscad
[dataproc@Euclid ~]$ openscad
bash: /usr/local/bin/openscad: No such file or directory
[dataproc@Euclid ~]$ /usr/bin/openscad
[dataproc@Euclid ~]$ #this worked
我完全不知道这里发生了什么,任何帮助都将不胜感激。
答案1
which
谎言;它可以根据从 shell 启动文件中收集到的理想情况来报告事情,同时会遗漏一些可能性,并且不会捕获任何非标准文件所做的更改。使用它type
来查看 shell 真正认为正在发生的事情。
2@mress:1 B$ type which
which is /usr/bin/which
外部命令根本无法告诉真正会发生什么,因为它们必须根据您的启动文件猜测函数和别名,并且不知道autoload
机制创建的东西;您需要询问 shell 本身它将做什么。
2@mress:2 B$ type type
type is a shell builtin
答案2
如果不知道你的 .profile (.bashrc 等),只能猜测,那么你就有地方
alias openscad=/usr/local/bin/openscad
这就是为什么你的 bash 尝试运行 /usr/local/bin/openscad 而不是 /usr/bin 中的默认运行的原因。