Ausführen einer ausführbaren Datei von Caja

Ausführen einer ausführbaren Datei von Caja

Als neuer Linux-Superuser, der versucht, von Windows 7 zu migrieren, habe ich mich bisher geweigert, grundlegende Fragen zu stellen, die durch eine Suche beantwortet werden können, aber hier stecke ich fest.

Wenn ich mit gcc im Linux-Terminal eine ausführbare Datei aus C erstelle, wird angegeben, hello.exedass die Berechtigung erteilt wurde X. Vom Terminal aus kann ich sie dann ./hello.exeproblemlos ausführen.

Aber wenn ich versuche, es von Caja aus auszuführen, werden seine Komponenten nur als Textdatei angezeigt. Ich kann zwar „Als Administrator ausführen“ auswählen, muss dann aber mein Anmeldekennwort eingeben.

Dies gilt unabhängig davon, welche dieser beiden Einstellungen aktiviert ist:

  • Führen Sie ausführbare Textdateien aus, wenn sie geöffnet werden.
  • Zeigen Sie ausführbare Textdateien beim Öffnen an.

Ich belasse es jedoch bei der zweiten Einstellung, da ich sonst jedes Mal, wenn ich eine Textdatei ansehe oder bearbeite, gefragt werde, was ich tun möchte.

Ich habe versucht, Caja vom Terminal aus mit sudo caja(benötigt Passwort) zu starten, aber dann führt Caja die ausführbare Datei nicht aus überhauptweil die Option „Ausführen“ nicht mehr vorhanden ist.

Wie kann ich eine ausführbare Datei direkt von Caja ausführen: mit einem Doppelklick?


Bearbeiten: Können Sie eine ausführbare Datei ausführen vonbeliebigDateimanager mit einem einfachen Doppelklick?
Bearbeitung 2: Mint Cinnamon läuft jetzt mit dem Dateimanager Nemo, aber die Frage ist im Grunde dieselbe. Übersehe ich eine Einstellung, mit der eine ausführbare Datei direkt ausgeführt werden kann?
Bearbeitung 3:

Bei meinen Recherchen fand ich
GNOME entfernt die Möglichkeit, binäre Apps aus Nautilus zu starten:

„Oder anders ausgedrückt: Sie können Programme, Skripte oder Apps nicht mehr durch Doppelklicken mit Nautilus starten.“ (Juni 2018)

Und da ich vermute, dass die Autoren der Dateimanager diese als Ableitungen von Open-Source-Code entwickeln (oder vielleicht gängige Systemkomponenten verwenden), tut dies vielleicht mittlerweile keiner von ihnen mehr.

Ich habe auch diese Wikipedia-Seite gefundenVergleich von Dateimanagernhat verschiedene Tabellen. Die eine heißtDateifunktionenhat in der letzten Spalte „Ausführbare Dateien ausführen“, also habe ich mehrere dieser Dateimanager ausprobiert.

  • Keinervon ihnen würden eine ausführbare Datei ausführen, die ich kompiliert habe (und einige von ihnen erlauben nicht einmal den einfachen Zugriff auf mein Arbeitslaufwerk – das nie das Systemlaufwerk ist).

Wie dem auch sei, ich habe für den Moment einen einfachen Workaround entdeckt: Mein bevorzugter Texteditor Geany führt mit einem einzigen Klick oder Drücken der Taste F5 eine ausführbare Datei der aktuellen Quelldatei (sofern vorhanden) aus, ohne sie in ein Projekt umzuwandeln.

Antwort1

Ja, Sie können eine ausführbare Datei von einem Dateimanager wie Caja ausführen.

Angenommen, Sie haben eine Datei hello.cim Home-Verzeichnis /home/User, die ein einfaches „Hallo Welt“-Programm ohne GUI enthält, etwa:

#include <stdio.h>

int main()
{
    printf("hello, world\n");
}

und das Programm wird durch Ausführen kompiliert gcc -o hello hello.c, um eine ausführbare Datei zu erzeugen hello.

Um hellodirekt von Caja aus zu starten, können Sie einen Launcher bereitstellen, der ein Terminal startet und die ausführbare Datei dort ausführt, oder Sie können die ausführbare Datei mit einer einfachen GUI bereitstellen.

Wenn Sie vorhaben, einen Launcher zu verwenden, öffnen Sie am besten, bevor Sie irgendetwas anderes tun (es sei denn, Sie haben dies bereits zuvor getan), ein Terminal, gehen Sie zu den Einstellungen, fügen Sie ein neues Profil namens „HoldOpen“ hinzu und stellen Sie „Wenn Befehl beendet wird“ auf der Registerkarte „Befehl“ dieses Profils auf „Terminal offen halten“ ein. Andernfalls wird das Terminal geöffnet, führt das Programm aus und schließt sich, bevor Sie beim Starten von einem Launcher irgendwelche Ergebnisse sehen können.

Erstellen Sie dann einen Launcher für das helloProgramm. Ein Launcher ist einfach eine Textdatei mit einer .desktopErweiterung; konzeptionell ist es so etwas wie eine Windows-Verknüpfung. Die .desktopErweiterung wird nicht angezeigt, wenn die Datei in Caja erscheint, aber sie ist in einer Verzeichnisliste in einem Terminal sichtbar. Ein einfacher Launcher für diesen Zweck, der so gespeichert werden sollte, hello.desktopist:

[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

Ein Launcher kann von Hand geschrieben oder (wie der obige) durch einen Rechtsklick auf den Desktop, die Auswahl von „Launcher erstellen ...“ und das Ausfüllen von mindestens den Feldern „Name“ und „Befehl“ (letzteres entspricht der Taste „Exec“) generiert werden.

Durch Doppelklicken auf die Startdatei in Caja sollte diese helloin einem eigenen Terminal gestartet und die Ausgabe dort angezeigt werden.

Beachten Sie, dass der Schlüssel „Terminal“ auf „false“ gesetzt ist, da tatsächlich Mate-Terminal ausgeführt wird, wobei die helloAusführung im Mate-Terminal erfolgt.

Beachten Sie auch, dass Sie, wenn Sie Gnome-Terminal statt Mate-Terminal verwenden, möglicherweise einige Zeilenumbrüche vor „Hallo Welt“ hinzufügen müssen, um die Ausgabe im Terminal sehen zu können.

Weitere Informationen zu Launchern finden Sie unter Freedesktop.orgDesktop-Eintragsspezifikation.

Eine Alternative, die es ermöglicht, das Programm in Caja direkt per Doppelklick auszuführen, ohne dass ein Launcher erforderlich ist, besteht darin, die Anwendung Zenity zu verwenden, um nach Bedarf GUI-Dialogfelder zu generieren und so dem Programm eine einfache GUI bereitzustellen. Sie sollten Zenity installieren können, indem Sie ausführen sudo apt-get install zenity. Anschließend können Sie die printf-Anweisung stdio im Programm hello.c durch stdlib und einen Systemaufruf ersetzen, um ein Dialogfeld anzuzeigen:

#include <stdlib.h>

int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}

man zenityWeitere Informationen zur Zenity-Anwendung finden Sie unter.

verwandte Informationen