Windows 7 から移行しようとしている新しい Linux「スーパーユーザー」として、検索すれば答えが見つかるような基本的な質問をすることに抵抗してきましたが、これで行き詰まっています。
Linux ターミナルで gcc を使用して C から実行可能ファイルを作成すると、権限hello.exe
が与えられていることがわかりますX
。その後、ターミナルから./hello.exe
問題なく実行できます。
しかし、Caja から実行しようとすると、そのコンポーネントがテキスト ファイルとして表示されるだけです。ただし、「管理者として実行」を選択することはできますが、ログイン パスワードを入力する必要があります。
これは、次の 2 つの設定のどちらが有効になっているかには関係ありません。
- 実行可能テキスト ファイルを開いたときに実行します。
- 実行可能なテキスト ファイルを開いたときに表示します。
ただし、これを 2 番目の設定のままにしておきます。そうしないと、テキスト ファイルを表示または編集するたびに、何をしたいのかを尋ねられます。
ターミナルからsudo caja
(パスワードが必要)でCajaを起動しようとしましたが、Cajaは実行ファイルを実行しません まったく実行オプションがなくなったためです。
ダブルクリックで Caja から実行可能ファイルを直接実行するにはどうすればよいですか?
編集: 実行ファイルを実行できますか?どれでもダブルクリックするだけでファイルマネージャーを起動できますか?
編集 2: 現在、Nemo ファイル マネージャーを使用して Mint Cinnamon を実行していますが、質問は基本的に同じです。実行可能ファイルを直接実行できるようにする設定が不足しているのでしょうか?
編集3:
調査中に私は
GNOME は Nautilus からバイナリ アプリを起動する機能を削除します:
「言い換えれば、Nautilus を使用してプログラム、スクリプト、またはアプリをダブルクリックして起動することはできません。」2018年5月)
ファイル マネージャーの作成者は、それらをオープン ソース コードの派生物として開発している (または共通のシステム コンポーネントを使用している) のではないかと私は考えていますが、現在、そうした作成者はいないかもしれません。
このWikipediaのページも見つけましたファイルマネージャーの比較さまざまなテーブルがあります。ファイル機能最後の列に「実行可能ファイルの実行」とあるので、いくつかのファイル マネージャーを試してみました。
- なしそのうちのいくつかは、私がコンパイルした実行可能ファイルを実行します (そして、そのうちのいくつかは、私の作業用ドライブ (システム ドライブではない) への簡単なアクセスさえ許可しません)。
しかし、いずれにせよ、今のところ簡単な回避策を見つけました。それは、私のお気に入りのテキスト エディター Geany が、現在のソース ファイルの実行可能ファイル (存在する場合) を、プロジェクトにせずに 1 回のクリックまたは 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
独自のターミナルが起動し、そこに出力が表示されます。
hello
実際に実行されているのは mate-terminal であり、 mate-terminal 内で実行されているため、「Terminal」キーが「false」に設定されていることに注意してください。
また、mate-terminal ではなく gnome-terminal を使用する場合は、ターミナルで出力を確認できるように、「hello, world」の前にいくつかの改行を追加する必要がある場合があります。
ランチャーの詳細については、Freedesktop.orgをご覧ください。デスクトップエントリー仕様。
ランチャーを必要とせずにダブルクリックで直接 Caja でプログラムを実行できるようにする別の方法は、必要に応じて GUI ダイアログ ボックスを生成する Zenity アプリケーションを使用して、プログラムにシンプルな GUI を提供することです。 を実行すると Zenity をインストールできるはずですsudo apt-get install zenity
。 次に、 で、hello.c プログラムの printf ステートメントを stdlib とシステム コールに置き換えて、ダイアログ ボックスを表示できます。
#include <stdlib.h>
int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}
man zenity
Zenity アプリケーションの詳細については、こちらをご覧ください。