Home > Latest topics

Latest topics > 拡張機能のビルド用のシェルスクリプト書いた

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

拡張機能のビルド用のシェルスクリプト書いた - May 05, 2007

拡張機能のファイル群からXPIパッケージを自動的に生成するバッチファイルを、須藤さんの書いたスクリプトとにらめっこしながらシェルスクリプトに移植してみた

元々バッチファイルもシェルスクリプトもよくわかってなくて、chmodを使う必要があったことからcygwinを入れざるを得なかった関係上、各コマンドの名前がWindows用の物なのかsh用の物なのかよくわかってなかったんだけど、あれこれぐぐりながら情報かき集めて、どうにかこうにか動く物になってくれた。

一応使いかたを説明しておくと、以下のような感じ。

まず、ファイルの配置が以下のようになっていることを前提にしています。

  • myextension.sh(件のスクリプトをリネームしたもの)
  • install.rdf
  • chrome.manifest
  • [defaults]
  • [components]
  • [content]
  • [locale]
  • [skin]

この状態でmyextension.shを実行すると、myextension.jarという名前のファイルを勝手に生成してchromeフォルダに入れた上で、マニフェストファイルやdefaults, componentsがある場合はそれもまとめて、myextension.xpiという名前のインストーラパッケージをこのディレクトリに吐き出してくれます。なお、jarを作りたくない場合は、content, locale, skinの代わりにchromeフォルダを置いておくと、そっちの中身をそのままXPIに格納します。

生成するパッケージの名前は、シェルスクリプト自身の名前から勝手に判断します。もし手動でパッケージ名を指定したい場合は、./make_new.sh myextensionてな感じに、引数としてパッケージ名を与えてください。

Subversionの利用を視野に入れた物なので、.svnとかのフォルダは、生成されるパッケージの内容からは除外されます。

分類:Mozilla > XUL, , , , 時刻:05:47 | Comments/Trackbacks (4) | Edit

Comments/Trackbacks

no title

えっと、「${...%...}」や「${...##...}」は*純粋*なborn shell では使えないので、
古い人間から見ると単に「シェルスクリプト」っていうのには抵抗があるんですけど…
(まあ今時の「シェルスクリプト」の定義は純粋なborn shellで動くことではない、って
いうのが常識でも、それでもいいんですけど…)

Commented by H.I. at 2007/05/06 (Sun) 01:20:58

そうなのですか

Unix系OSはUbuntuのデスクトップ環境くらいしか使えないド素人なので、知りませんでした……
一般名詞としては、DOSのバッチファイルのような物も含めて、OSのシェル上で動くスクリプト全般を指してシェルスクリプトと呼ぶという風に書いてある文献もあったので、大目に頂けると幸いです。Ubuntuの/bin/shは実際にはbashになってるのかな?

もしよろしければ、後学のために、僕が書いたようなスクリプトは厳密には何と呼ばれるべきなのかも教えていただけると嬉しいです。

Commented by Piro at 2007/05/06 (Sun) 05:06:27

no title

横から失礼。
Ubuntuというか、LinuxディストリはわざわざBshを入れない限り/bin/shが/bin/bashを指してる場合が多いです。(違うのあったかな……)
『狭義の』シェルスクリプトは由緒正しいBshの機能で実現された物でしょうが、『広義の』シェルスクリプトとしてはbashを使ってもtcshを使ってもシェルスクリプトに変わりはないと思います。
# bash依存だったら"#!/bin/bash"を指定した方が無難ではありますけどね。
元々Piroさんが自分で使う機能を付けたスクリプトだから、持ってもいないBsh環境で動くようにしなくてもいいし、「bashスクリプト」などと呼ぶ必要もないとは思います。
# あと、BshはBorn ShellじゃなくBourne Shellでは? とマジレス。

Commented by Ren at 2007/05/06 (Sun) 09:51:52

no title

はい、Renさんのおっしゃるように、これを「シェルスクリプト」と呼ぶことには何も問題ないと思います。
(WindowsのCMD.exe等でのバッチファイルを「シェルスクリプト」と呼ぶのは相当な違和感がありますけど。)

自分が違和感を持ったのは、何の動作環境も示さずに単に「シェルスクリプト」と呼ぶ場合には暗黙でBourne shellでも動作するスクリプトだ、と習ってきたからです。(自分でも書いたように古い常識ですが)だからUbuntuで動かしているという情報があれば全然問題ないです。

Bourne→Bornの間違いは恥ずかしいですね。すみません。

Commented by H.I. at 2007/05/10 (Thu) 19:37:50

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-05-05_shellscript.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード