Как это возможно, что я могу выполнить файл JAR из оболочки?

Я всегда думал, только исполняемые файлы в UNIX/Linux ELF-файлы и сценарии оболочки. Но я обнаружил, что можно использовать только $ ./file.jar вместо $ java -jar file.jar,

Как 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

Другими примерами являются питон и вино, да, если вы узнаете, как binfmt_misc работает, вы можете создавать свои собственные типы тоже.

Другие вопросы по тегам