Как новый «суперпользователь» Linux, пытающийся перейти с Windows 7, я не решался задавать элементарные вопросы, на которые можно ответить с помощью поиска, но я застрял на этом.
Когда я создаю исполняемый файл из C с помощью gcc в терминале Linux, называемый say hello.exe
it have given X
permission. Тогда из терминала я могу запустить ./hello.exe
без проблем.
Но когда я пытаюсь запустить его из Caja, он просто показывает свои компоненты как текстовый файл. Я могу, однако, выбрать "Запуск от имени администратора", но тогда мне придется ввести свой пароль для входа.
Это не зависит от того, какой из этих двух параметров включен:
- Запускать исполняемые текстовые файлы при их открытии.
- Просмотр исполняемых текстовых файлов при их открытии.
Я оставляю это во второй настройке, иначе каждый раз при просмотре или редактировании текстового файла мне будут спрашивать, что я хочу сделать.
Я попытался запустить Caja из терминала с помощью sudo caja
(нужен пароль), но тогда Caja не запустит исполняемый файл совсемпотому что опция «Выполнить» больше недоступна.
Как запустить исполняемый файл из Caja напрямую: двойным щелчком?
Редактировать: Можно ли запустить исполняемый файл излюбойфайловый менеджер простым двойным щелчком?
Редактировать 2: Сейчас запускаю Mint Cinnamon с файловым менеджером Nemo, но вопрос в основном тот же. Я упускаю какую-то настройку, которая позволяет исполняемому файлу запускаться напрямую?
Редактировать 3:
В ходе моего исследования я обнаружил
GNOME удаляет возможность запуска бинарных приложений из Nautilus:
«Или, говоря другими словами, вы не сможете дважды щелкнуть по программам, скриптам или приложениям, чтобы запустить их с помощью Nautilus». (Май 2018 г.)
И поскольку я подозреваю, что авторы файловых менеджеров разрабатывают их как производные от открытого исходного кода (или, возможно, используют общие системные компоненты), возможно, сейчас никто из них этого не делает.
Я также нашел эту страницу в ВикипедииСравнение файловых менеджеровимеет различные таблицы. Одна называетсяХарактеристики файлапоследний столбец - «Запуск исполняемых файлов», поэтому я перепробовал несколько из этих файловых менеджеров.
- Никтоиз них запустят исполняемый файл, который я скомпилировал (а некоторые из них даже не позволят получить легкий доступ к моему рабочему диску, который никогда не является системным диском).
Но в любом случае, на данный момент я нашел простое решение: мой любимый текстовый редактор Geany будет запускать исполняемый файл текущего исходного файла, если он существует, одним щелчком мыши или нажатием клавиши F5, не создавая при этом проект.
решение1
Да, вы можете запустить исполняемый файл из файлового менеджера, например Caja.
hello.c
Допустим, у вас в домашнем каталоге есть файл /home/User
, содержащий простую программу «Hello, World» без графического интерфейса, например:
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
и программа компилируется путем запуска gcc -o hello hello.c
для создания исполняемого файла hello
.
Для непосредственного запуска hello
из Caja вы можете предоставить средство запуска, которое запустит терминал и запустит в нем исполняемый файл, или вы можете предоставить исполняемому файлу простой графический интерфейс.
Если вы планируете использовать лаунчер, то перед тем, как что-либо делать (если вы этого еще не сделали), лучше всего открыть терминал, перейти в «Настройки», добавить новый профиль с именем, например, «HoldOpen», и установить «Когда команда завершается» на вкладке «Команда» этого профиля на «Удерживать терминал открытым». В противном случае терминал откроется, запустит программу и закроется до того, как вы увидите какие-либо результаты при запуске из лаунчера.
Затем создайте лаунчер для hello
программы. Лаунчер — это просто текстовый файл с .desktop
расширением; концептуально это что-то вроде ярлыка Windows. .desktop
Расширение не отображается, когда файл появляется в Caja, но оно видно в списке каталогов в терминале. Простой лаунчер для этой цели, который следует сохранить как hello.desktop
есть:
[Desktop Entry]
Version=1.0
Type=Application
Name=hello
Comment=
Exec=mate-terminal --profile=HoldOpen -e "/home/User/hello"
Icon=
Path=
Terminal=false
StartupNotify=false
Средство запуска можно написать вручную или (как в примере выше) сгенерировать, щелкнув правой кнопкой мыши на рабочем столе, выбрав «Создать средство запуска...» и заполнив как минимум поля «Имя» и «Команда» (последнее соответствует клавише «Exec»).
Двойной щелчок по файлу запуска в Caja должен запустить hello
его в собственном терминале и отобразить там свой вывод.
Обратите внимание, что клавиша «Terminal» установлена в значение «false», поскольку на самом деле запущен mate-terminal, причем hello
запущен он в mate-terminal.
Также обратите внимание, что если вы используете gnome-terminal вместо mate-terminal, вам может потребоваться добавить несколько новых строк перед «hello, world», чтобы увидеть вывод в терминале.
Дополнительную информацию о лаунчерах можно найти на сайте Freedesktop.org.Технические характеристики начального уровня рабочего стола.
Альтернативой, которая позволяет запускать программу в Caja напрямую двойным щелчком без необходимости в средстве запуска, является использование приложения Zenity для генерации диалоговых окон GUI по мере необходимости, тем самым предоставляя программе простой GUI. Вы должны иметь возможность установить Zenity, запустив sudo apt-get install zenity
. Затем, , вы можете заменить stdio оператор printf в программе hello.c на stdlib и системный вызов для отображения диалогового окна:
#include <stdlib.h>
int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}
man zenity
Более подробную информацию о приложении Zenity см . здесь.