Почему некоторая некорневая программа может быть выполнена двойным щелчком в то время как другие нет?

Например, я нашел командную строку процесса Firefox:/usr/lib/firefox/firefox. Я просматриваю к этому местоположению и дважды щелкаю по нему, оно запрашивает это: введите описание изображения здесь

Однако, если я ввожу команду в терминале, она обычно работает.

0
задан 23 February 2019 в 22:03

1 ответ

Простая причина состоит в том, что файловый менеджер распознает тип файла. Если Вы дважды щелкаете /usr/share/applications/firefox.desktop или любой другой .desktop файл в этом отношении, файловый менеджер выполнит его как приложение. Иначе файловый менеджер ищет, которому тип файла соответствует который приложение.

И это, были /usr/lib/firefox/firefox входит. Это компилируется как общий объект.

$ file   /usr/lib/firefox/firefox
/usr/lib/firefox/firefox: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d2a4bfe9dbe1aadd5480a6b5612b7a3fc1fd01a2, stripped

Этот тип файла был затронут подробно в ответе Коса, но в основном общий объект является исполняемым файлом, который может использоваться в качестве библиотеки. Библиотеки обычно включаются в другое программное обеспечение, следовательно Наутилус может проигнорировать и не имеет никакой программы по умолчанию, присвоенной ему. В отличие от этого, для окружения (или скорее ядро, к который execve() вызов передаст путь к тому файлу), распознает что как исполняемый файл очень хорошо.

Теперь, что выполняется, когда Вы выполняетесь firefox.desktop ? Это /usr/bin/firefox.sh - сценарий обертки, который делает несколько проверок и заменяет себя /usr/lib/firefox/firefox позже. В этом случае сценарий оболочки обнаруживается как тип файла, и Наутилус счастливо порождает это. Существует много других вещей, которые происходят негласно, но это - общая суть всего этого.

1
ответ дан 26 October 2019 в 04:19

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

Похожие вопросы: