我参与的一个开源项目依赖于which
我想删除,因为一些Linux发行版(如Fedora 20的云版本)默认情况下不附带它,并且我认为强制安装很难看,因为我们使用它是多么微不足道。
我们所做的就是找到Java二进制文件的路径,然后使用该信息设置$JAVA_HOME
。
有没有办法用Bash内置插件做到这一点?一般来说,如何在最小化依赖关系(如which
)的同时优雅地找到二进制文件?或者只是使用which
是一个更好的调用,例如,如果唯一的选择是针对find
中的目录运行$PATH
并且社区认为非常不优雅?
请注意,对于which
相关的事情,Google的效果极其无效。
答案 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
使用zsh
,bash
和sh
如果您使用的是bash
,则-P
选项会直接为您提供所需的结果:
~/ type -P python
/usr/bin/python
答案 2 :(得分:0)
我已经提到了我的偏好"输入"。但是这个任务还有一个额外的命令:
whereis -b <file>
找到指定文件的二进制文件