На самом деле различия между ними не так уж велики.
В типичной системе Unix или Linux существует менее пяти реальных исполняемых файлов. На Ubuntu это /lib/ld-linux.so.2 и /sbin/ldconfig.
Все остальное, которое помечено как исполняемое, запускается через интерпретатор, для которого поддерживаются два формата:
Файлы, начинающиеся с [ f3] будет иметь имя интерпретатора между этим и первым символом новой строки (это верно, нет требования, чтобы «скрипты» были текстовыми файлами). У файлов ELF есть сегмент PT_INTERP, который дает путь к интерпретатору (обычно /lib/ld-linux.so.2).Когда такой файл выполняется, ядро находит имя интерпретатора и называет его. Это может произойти рекурсивно, например, при запуске сценария оболочки:
Файлы, начинающиеся с #!, будут иметь имя интерпретатора между этим и первым символом новой строки (это верно, нет требования что «скрипты» являются текстовыми файлами). Ядро открывается /bin/sh, находит сегмент PT_INTERP, указывающий на /lib/ld-linux.so.2. Файлы ELF имеют сегмент PT_INTERP, который дает путь к интерпретатору (обычно /lib/ld-linux.so.2). ld-linux.so.2 загружает сегменты кода из /bin/sh, разрешает ссылки на разделяемую библиотеку и запускает свою основную функцию /bin/sh затем снова откроет файл сценария и начнет интерпретировать его по строкам.С точки зрения ядра, единственное различие заключается в том, что для файла ELF передается дескриптор открытого файла, а не имя файла; это в основном оптимизация. Если интерпретатор затем решает перейти к сегменту кода, загруженному из файла, или интерпретировать его по строкам, решает только интерпретатор и в основном основан на соглашении.
Ответ, написанный @ Olian04, является частично правильным.
Что вы можете сделать, это войти в Settings>About Phone, а затем нажать Build Number (вероятно, буквы и цифры, всего шесть) семь раз для активации режима разработки. Оттуда выйдите About Phone. Вы должны увидеть новую опцию Developer Options прямо над About Phone или где-то рядом с ней.
Войдите внутрь Developer Options и проведите пальцем вниз, пока не увидите USB settings. Он должен быть установлен на «Зарядка». Установите его в режим MTP.
Подсоедините кабель и повторите попытку. Этот метод был протестирован на моем Nexus 5X, как на 6.0 Marshmallow, так и на 7.0 Nougat.