查找没有它的二进制路径

时间:2014-05-30 17:43:52

标签: linux bash shell which

我参与的一个开源项目依赖于which我想删除,因为一些Linux发行版(如Fedora 20的云版本)默认情况下不附带它,并且我认为强制安装很难看,因为我们使用它是多么微不足道。

我们所做的就是找到Java二进制文件的路径,然后使用该信息设置$JAVA_HOME

有没有办法用Bash内置插件做到这一点?一般来说,如何在最小化依赖关系(如which)的同时优雅地找到二进制文件?或者只是使用which是一个更好的调用,例如,如果唯一的选择是针对find中的目录运行$PATH并且社区认为非常不优雅?

请注意,对于which相关的事情,Google的效果极其无效。

3 个答案:

答案 0 :(得分:6)

POSIX-ly正确的方式:

cmd=$(command -v whatever)

答案 1 :(得分:5)

可能通过解析shell内置type的输出?

~/ type python
python is /usr/bin/python
~/ type type
type is a shell builtin

使用zshbashsh

进行测试

如果您使用的是bash,则-P选项会直接为您提供所需的结果:

~/ type -P python
/usr/bin/python

答案 2 :(得分:0)

我已经提到了我的偏好"输入"。但是这个任务还有一个额外的命令:

 whereis -b <file>

找到指定文件的二进制文件