我一直以为,UNIX/Linux 中只有ELF
-files 和 shell 脚本才是可执行文件。但我发现,可以使用 just$ ./file.jar
代替$ java -jar file.jar
。
-files有何JAR
特殊之处?还有其他此类行为的例子吗?我可以创建自己的文件类型,仅通过其名称/路径即可执行吗?
答案1
这是因为 ubuntu 支持binfmt_misc
内核模块,并且该jar
类型已启用。请参阅/proc/sys/fs/binfmt_misc/jar
这是非常老的版本(自内核 1.03 以来)。更多信息请参见此处:https://stackoverflow.com/questions/1667830/running-a-jar-file-without-directly-calling-java
其他例子是 python 和 wine,是的,如果你了解binfmt_misc
它们的工作原理,你也可以创建自己的类型。