Как это возможно, что я могу выполнить файл 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
работает, вы можете создавать свои собственные типы тоже.