お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-05-29 15:59:08

ack
メンバ
登録日: 2007-06-01

ダブルクリックで即スクリプトを実行したい

LiveCDで起動したばかりの場合など、現行のUbuntuの初期状態では nautilus で実行可能なテキストファイルをダブルクリックすると
実行するか編集するか端末内で実行するか・・・のダイアログが出る形となっています。

これを Windows環境の .bat ファイルや、MacOSXでの .command ファイル
http://www.sra.co.jp/people/h-asaoka/study/Mac/sh2command/index.html

のように、ダブルクリックで即実行されるような形に
・Ubuntuの初期状態の環境のまま(基準は日本語RemixCDをLiveCD起動した時の環境)
・ファイル(というよりアイコン)は1つのまま
持っていくには何か方法はありますでしょうか?
(使用者が気づかない内に/tmp辺りに一時ファイルを作ったりするのは有りとする)

初期状態では 実行属性のついた ELF バイナリ ぐらいしかダブルクリックで即実行できるものが私は見つけられず、
今のところ、どうにかして見た目1つのファイルにしようとすると

コード:

/*とても大雑把な例*/
#include <stdlib.h>
#include <stdio.h>

int main(void) {
    FILE *fp;

    fp = fopen("/tmp/this_is_a_test.sh", "w");
    
    fprintf(fp, "#!/bin/sh¥n¥n");
    fprintf(fp, "lshw | less¥n");

    fclose(fp);
    sync(fp);

    system("xterm -e 'bash /tmp/this_is_a_test.sh'");

    remove("/tmp/this_is_a_test.sh");
    
    return;
}

のようなものをコンパイルして、出てきたものを使う、ぐらいしか思いつきませんでした。
※そんなんならもう普通に中身もCで書けよ、という感じではあるのですが・・・

Windowsで出てこない言葉や操作、概念(端末内で実行、とか実行属性をつけるとかetc)は使わず、Ubuntu本体に影響を与えずに、ファイル数はなるべく少なく・・・
いわゆる、よくある
・右クリックでアーカイブを展開して、出てきたファイルをダブルクリックすると使えます
・インストールや管理者パスワードの入力、は必要ありません
・アンインストールはファイルを削除するだけです。
・・・のような流れを行う、うまい方法はあるでしょうか。

オフライン

 

#2 2009-05-29 16:59:08

yama
メンバ
登録日: 2006-10-23

Re: ダブルクリックで即スクリプトを実行したい

nautilusの初期設定の仕様なんで、nautilusの設定を変更すれば回避できるんですが・・・ダメなんでしょうねえ。
一応5クリックで設定変更できました。

オフライン

 

#3 2009-05-29 17:30:42

ack
メンバ
登録日: 2007-06-01

Re: ダブルクリックで即スクリプトを実行したい

お返事ありがとうございます。

yama による投稿:

nautilusの初期設定の仕様なんで、nautilusの設定を変更すれば回避できるんですが・・・ダメなんでしょうねえ。
一応5クリックで設定変更できました。

そうなんですよね、初期設定されている値の都合なだけで「その気」になりさえすれば何の問題もない話ではあるのですが。
「もしこれが可能なら活用したい」というレベルのもので切羽つまった話はなく、私はただの趣味ユーザなのでその筋の世界では一般的な「うまい方法」があるのかな・・・と思った次第です。

オフライン

 

#4 2009-05-29 17:50:00

hito
管理者
登録日: 2007-03-18

Re: ダブルクリックで即スクリプトを実行したい

これは .desktop なエントリを書いて、そいつにちゃんとアイコンを設定しておく、では駄目ですか?
(圧縮されたファイルを展開して、2つ実行ファイルっぽいものが出てくるのがダメですかね?)

なんとなーく、application.sh と application.desktop(見た目「application」) が出てくるなら、desktopエントリの方をクリックしてくれるので導線的には問題なさそうな気がしています。が、状況によってはダメかもという。

オフライン

 

#5 2009-05-29 17:57:59

yama
メンバ
登録日: 2006-10-23

Re: ダブルクリックで即スクリプトを実行したい

後は、シェルスクリプトをバイナリ形式に変換してくれる、シェルスクリプトコンパイラなるものを使ってみるとか。

オフライン

 

#6 2009-05-29 18:07:13

ack
メンバ
登録日: 2007-06-01

Re: ダブルクリックで即スクリプトを実行したい

お返事ありがとうございます。

hito による投稿:

これは .desktop なエントリを書いて、そいつにちゃんとアイコンを設定しておく、では駄目ですか?
(圧縮されたファイルを展開して、2つ実行ファイルっぽいものが出てくるのがダメですかね?)

これもなかなかいい感じ、かとは思いますがやはりファイルが2つになってしまいますよね・・・。
「デスクトップに.exeそのものが転がっている」というあの状況が実現できたら、と思っています。

hito による投稿:

なんとなーく、application.sh と application.desktop(見た目「application」) が出てくるなら、desktopエントリの方をクリックしてくれるので導線的には問題なさそうな気がしています。が、状況によってはダメかもという。

application.desktop のみ をデスクトップに置かれて「動かないー」はありそうです。

オフライン

 

#7 2009-05-29 18:10:30

ack
メンバ
登録日: 2007-06-01

Re: ダブルクリックで即スクリプトを実行したい

お返事ありがとうございます。

yama による投稿:

後は、シェルスクリプトをバイナリ形式に変換してくれる、シェルスクリプトコンパイラなるものを使ってみるとか。

おおそんなものが。
検索してみました。
shc
http://www.datsi.fi.upm.es/~frosal/

これですね?
早速試してみます。

オフライン

 

#8 2009-05-29 18:29:10

ack
メンバ
登録日: 2007-06-01

Re: ダブルクリックで即スクリプトを実行したい

shc
http://www.datsi.fi.upm.es/~frosal/

試しました。ばっちりです!yamaさんありがとうございます。

shc-3.8.6.tgz ダウンロード、展開。
フォルダの中に application.sh を入れて、そのフォルダで開いた端末で

コード:

./shc -v -r -T -f application.sh

で、ELFバイナリの application.sh.x が生成されました。
これはいろいろなところで便利に使えそうです。

オフライン

 

Board footer

Powered by FluxBB