從 Caja 運行可執行文件

從 Caja 運行可執行文件

作為一名試圖從 Windows 7 遷移的新 Linux“超級用戶”,我一直拒絕提出可以透過搜尋來回答的基本問題,但我一直堅持這一點。

當我在 Linux 終端機中使用 gcc 從 C 建立可執行檔時,稱hello.exe它已被授予X權限。然後從終端我可以./hello.exe毫無問題地運行。

但是當我嘗試從 Caja 運行它時,它只是將其組件顯示為文字檔案。但是,我可以選擇“以管理員身份運行”,但隨後我必須輸入登入密碼。

這與啟用這兩個設定中的哪一個無關:

  • 打開可執行文字檔案時運行它們。
  • 開啟可執行文字檔案時查看它們。

不過,我將其保留為第二個設置,否則每次查看或編輯文字檔案時都會被問到我想做什麼。

我嘗試使用sudo caja(需要密碼)從終端啟動 Caja,但是 Caja 不會運行可執行文件 根本不因為“運行”選項不再存在。

如何直接從 Caja 運行可執行檔:雙擊?


編輯:您可以運行可執行檔嗎任何只需雙擊即可開啟檔案總管?
編輯 2:現在使用 Nemo 檔案管理器運行 Mint Cinnamon,但問題基本上相同。我是否缺少一些允許直接運行可執行檔的設定?
編輯3:

在我的研究過程中我發現
GNOME 正在刪除 Nautilus 啟動二進位應用程式的能力

“或者,換句話說,你將無法使用 Nautilus 雙擊程式、腳本或應用程式來啟動它們。” (2018年5月

正如我懷疑文件管理器作者將它們開發為開源程式碼的衍生物(或可能使用通用系統元件)一樣,也許他們現在都沒有這樣做。

我還找到了這個維基百科頁面文件管理器的比較有各種桌子。那個叫文件特徵最後一欄是“運行可執行檔”,所以我嘗試了其中的幾個檔案管理器。

  • 沒有任何其中一些將運行我編譯的可執行檔(其中一些甚至不允許輕鬆存取我的工作驅動器 - 這永遠不是系統驅動器)。

但無論如何,我現在發現了一個簡單的解決方法,那就是我最喜歡的文本編輯器Geany 將通過單擊或按F5 按鍵來運行當前源文件的可執行檔(如果存在),而不會將其放入項目中。

答案1

是的,您可以從檔案總管(例如 Caja)執行可執行檔。

hello.c假設您的主目錄中有一個文件,/home/User其中包含一個沒有 GUI 的簡單「hello, world」程序,例如:

#include <stdio.h>

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

程式運行後編譯gcc -o hello hello.c產生可執行檔hello

要直接從 Caja 啟動hello,您可以提供一個啟動器來啟動終端並在其中運行可執行文件,或者您可以提供帶有簡單 GUI 的可執行檔。

如果您打算使用啟動器,那麼在執行任何其他操作之前(除非您之前已經執行過此操作),最好打開一個終端,轉到“首選項”,添加一個名為“HoldOpen”的新配置文件,然後設定「當命令退出時」將該設定檔的「命令」標籤上的「保持終端開啟」。否則,終端將開啟、運行程序,然後在您從啟動器啟動時看到任何結果之前關閉。

然後為該hello程式建立一個啟動器。啟動器只是一個帶有.desktop擴展名的文字檔案;從概念上講,它類似於 Windows 快捷方式。當檔案出現在 Caja 中時,副.desktop檔名不會顯示,但在終端機的目錄清單中可見。一個簡單的啟動器,應按原樣保存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。然後,可以將hello.c程式中的printf語句替換為stdio,並用stdlib和系統呼叫來顯示對話框:

#include <stdlib.h>

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

man zenity有關 Zenity 應用程式的更多信息,請參閱 參考資料。

相關內容