Я всегда думал, что только исполняемые файлы в UNIX / Linux являются ELF
-файлами и сценариями оболочки. Но я обнаружил, что можно использовать только $ ./file.jar
вместо $ java -jar file.jar
.
Чем отличаются JAR
-файлы? Есть ли другие примеры такого поведения? Могу ли я создать свой собственный тип файла, который может быть выполнен только по его имени / пути?
Это связано с тем, что 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
, вы также можете создавать свои собственные типы.