• ベストアンサー

シェルスクリプトのバイナリ化

オリジナルのシェルスクリプトを作成しています。 そのシェルを配布したいと考えております。 そこでRPMにビルドして、テストサーバーにインストールすると、 そのシェルのソースコードが丸見えの状態になってしまいます。 シェルのバイナリ化をするには、どうすればいいでしょうか。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.1

shc というのがあるらしいです。

関連するQ&A

  • UNIXシェルプログラム等からバイナリーファイルを作成する方法

    UNIX環境で、ある出力を得るために、複数の Perl スクリプト、シェル スクリプト、またバイナリのプログラムを決まった手順で実行しています。最近になって、これらのプログラムをすべて他の人に譲り渡す必要が生じたのですが、スクリプトの中にソースは配布できないものが含まれています。 そこで、これらのプログラムをまとめて一つのバイナリ実行ファイルを作成できないかと思案しているのですが、それは可能でしょうか。また可能な場合、どのようにしたらよいのか教えていただけないでしょうか。 よろしくお願いします。

  • 簡単なシェルスクリプトを見てください。

    次のようなシェルスクリプトを作成しました。 #!/bin/sh echo [$1] awk '/"0312345678"/ {print}' /test > /test1 awk '/$1/ {print}' /test > /test2 のように簡単なスクリプトです。 $ sample \"0312345678\" で実行させたら、echo では"0312345678"に出力されます。 しかし、test1にはちゃんと結果が入っていますが、test2は空のファイルです。 なぜ、結果が違うのですか? 実行時、引数を渡す方法で、test1と同じ結果を得たければ、どうすればいいのですか?

  • シェルスクリプト内の「exit」

    クライアントからteratermでservAに接続します。 そこからservBに接続します。 $ ssh servB サーバーBに個人のディレクトリがあり、そこにシェルスクリプトを作っています。 そのシェルスクリプトは「exit 0」で終わっています。 これを実行すると、サーバーBからログアウトしてしまいます。 exitはシェルスクリプト内で使うと、シェルスクリプトを終了するだけかと思ったのですが、ログアウトもしてしまうものなのでしょうか? exitを書かなければ、ログアウトすることなく、カレントディレクトリは変わらないままです。 実行するたびに $ ssh servB $ cd work/mydir と実行しないと自分のディレクトリに戻ってこれないので不便です。 色々と調べたのですが、なぜログアウトしてしまうのかわかりません。 どうすれば、ログアウトしないのか教えて下さい。 よろしくお願いいたします。 シェルスクリプト(TEST) #!/bin/bash -xv echo hello! exit 0 実行結果 [company@servB mydir]$ . TEST hello! Connection to servB closed. [company@servA ~]$

  • シェルスクリプト 引数の引渡しについて

    こんにちは。現在シェルスクリプトを勉強中なのですがどうしてもわからないことがあり投稿させていただきました。 シェルスクリプトにて作成した引数(引数にスペースがある場合)を別のシェルスクリプトへ渡そうとしたときにうまく引き渡せなくて困っています。 詳しくは以下のスクリプト参照願います。 (1)引数作成のスクリプト _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh a="HELLO" b="\"WOW WOW\"" test.sh $a $b _/_/_/_/_/_/_/_/_/_/_/_/ (2)test.sh _/_/_/_/_/_/_/_/_/_/_/_/ #!/bin/sh echo $1 echo $2 echo $3 _/_/_/_/_/_/_/_/_/_/_/_/ これを実行すると $1=HELLO $2="WOW $3=WOW" となってしまいます。 これを $1=HELLO $2=WOW WOW $3=NULL(空欄) となるようにシェルスクリプトで作成することはできないのでしょうか? ご教授よろしくお願いします。 よろしくお願いします。

  • シェルスクリプト間で排他をとりたい

    環境 linux(redhat) 使用シェル bash シェルスクリプトAとシェルスクリプトBを作成し、 シェルスクリプトAが動作している間は、シェルスクリプトBの動作を禁止したいと考えています。 例えば、シェルスクリプトAが起動している状態で、シェルスクリプトBが起動されたとき、シェルスクリプトBは、シェルスクリプトAが起動していることを検知して、自発的に処理を終了するようにしたいと考えています。 上記のような仕組みをシェルスクリプトで実現可能でしょうか? 基本的には、シェルスクリプトの先頭で、ある資源のロックを行い、終了時にロックの解放ができれば、その仕組みは実現可能と考えています。 (シェルの異常終了時は、ロックが自動的に解放されることが望ましい) 上記のようなことをシェル(bash)で実現可能でしょうか。 bash単独での方法、もしくはbashからperl,C言語作成の実行モジュールを呼び出す方法でもかまいません。 (ちなみにperl(もしくはC言語作成のモジュール)単独では実現可能なことはわかっています)

  • 「シェルスクリプト」でできませんか

    Linuxで色々と試しにやってみる時によく使うので メモ帳に下記のようなものをメモしてあります。 vi /var/www/html/index.html --- (1) <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>test</title> </head> <body> テスト中(/var/www/html/index.html) </body> </html> (1)をコピーして、ペーストし、viエディタを起動します 次に「i」を押して入力状態にします 次に<html ~ </html>をコピーし、ペーストします 「ESC」「:」「wq」と押して「index.html」の作成が完了します この一連の処理を「シェルスクリプト」を使って一気にできないものでしょうか viエディタに慣れてないこともあって、煩わしいのです また「シェルスクリプト」のいいサンプルないでしょうか?なかなか見つかりません

  • 趣味のプログラミング、シェルスクリプトでやるなら?またはPerl?

    新人SEです。仕事でUNIXのシェルスクリプトを使っているのですが休日にも趣味でシェルスクリプトで何か書けたらいいと思っています。 しかし趣味のシェルスクリプトとなると、何を書いたら楽しめるか・便利になるのかあまりイメージが湧きません・・自宅でサーバ管理などしてるわけではないので、クライアント側では何かシェルスクリプトを使うメリットがあるのか分からないのです。 ちなみに、シェルスクリプトが趣味になりそうになかったら、同じUNIX系ツールということでPerlを覚えようかとも思っています。Webアプリの作成などにも興味ありますし・・ 趣味のシェルスクリプト、何かいい例などありますでしょうか?関連してPerlについてでもいいので何か教えて頂けると嬉しいです。

  • BシェルとCシェル

    Solarisサーバの運用において、シェルでスクリプトを作成する場合、BシェルとCシェルでは、どちらが多く用いられているでしょうか?

  • 適切なシェルスクリプトの実行方法について

    シェルスクリプト内でi18nの再読み込みをするために . /etc/sysconfig/i18n と記述するとシェルスクリプト終了後にi18nの内容が反映されていません。 シェルスクリプト自体は ./shell1.sh という形で実行しています。 質問1:このようになるのは「./shell1.sh」と実行したスクリプトは 新たに作成された子プロセスによって実行される為、スクリプトが終了し 親プロセスに戻っても親自身は再読み込みを行なっていないから、という認識で間違いないでしょうか。 質問2:この現象の回避策として「source shell1.sh」とsourceコマンドで シェルスクリプトを実行する方法を試してみました。 実際に上手くいったのですが、「set -e」を使っているとエラー時に ログアウトしてしまうなどの弊害もありました。 他に適切な回避策に問題はないでしょうか。 ご存知のかた、お手数ですがご解答のほど宜しくお願い致します。

  • ファイルから文字列を読み込むシェルスクリプトの作成

    現在シェルスクリプトの勉強をしています。 ファイルから文字列を読み込み表示するだけのシェルスクリプトを 作成しているのですが、エラーが出てうまくいきません。 ./test.sh: line 10: syntax error near unexpected token `done' 以下の通りファイルを作っています。 改行コードはLF、文字コードはSJISとなっています。 どのあたりが間違っているのか教えて頂けますでしょうか。 よろしくお願いします。 test.sh --------------------- #!/bin/sh LIST=./abc.lst while read F1 echo ${F2} break done < ${LIST} } --------------------- abc.lst --------------------- AAA BBB CCC ---------------------

専門家に質問してみよう