楠根です。 In message <19980302033632J.shoushin _at_ mail2.alpha-net.or.jp> Subject: [linux-users:20551] Re: シェルスクリプトについて Shoushin Liu <shoushin _at_ mail2.alpha-net.or.jp> さん曰く: >> > /bin/sh 以外を processor として使いたい場合 >> > (ってゆ〜かそうでなくても普通)は、 >> > >> > >> 結論として、シェルスクリプトの一番始めには、 >> > >> #!シェルの指定 >> > >> を付けようということです。 >> >> これは知りませんでした。そこで、 >> >> #!/bin/tcsh >> set d = `date` >> echo "Today is $d[2-3]" >> >> とやってみたところ、 >> 今度は何も表示されませんでした。 /bin/tcsh はありますか? 例えば、/home/kusune/hoge に実行属性がついていて、その内容が ---------------- begin ---------------------- begin ---------------- #!/bin/sh -f mule ----------------- end ------------------------ end ----------------- であった場合、 $ cd /home/kusune $ ./hoge とすると、kernel は $ /bin/sh -f ./hoge を起動するようになっています。 で、/bin/sh -f filename とすると、filename で指定した file の中に記述 されている command を実行するので、この場合 mule が起動されるわけです。 この際、mule を C-z で一時停止し、ps をかけてみると、 ---------------- begin ---------------------- begin ---------------- $ cd /home/kusune $ ./hoge [mule を C-z で一時停止] $ ps x PID TTY STAT TIME COMMAND 189 p1 S 0:00 -bash 215 p1 T 0:00 sh -f ./hoge 216 p1 T 0:00 mule 218 p1 R 0:00 ps x ----------------- end ------------------------ end ----------------- となります。189 の bash は login shell で、215 の sh -f というのが、 kernel によって起動されなおした command です。 ここで、ちょっと実験をしてみます。 <</home/kusune/hoge2>> ---------------- begin ---------------------- begin ---------------- #!/bin/cat -n この file は shell(?) script のてすとのために作りました。 こういうこともできるわけです。 ----------------- end ------------------------ end ----------------- という内容の file を作ります。この file を実行するとどうなるでしょう? 答えは、 ---------------- begin ---------------------- begin ---------------- $ cd /home/kusune $ ./hoge2 1 #!/bin/cat -n 2 この file は shell(?) script のてすとのために作りました。 3 こういうこともできるわけです。 ----------------- end ------------------------ end ----------------- となります。 $ /bin/cat -n ./hoge としたのと同じですね。 つまり、command はいわゆる shell でなくてもなんでもいいわけです。 なお、上の例でわかるように、#! の後に書くコマンドには option を付ける ますが、この option の数は、Linux では無制限のようですが、Solaris など の古典的な UNIX では一つしかとることのできないものが多いようです。 <</home/kusune/hoge3>> ---------------- begin ---------------------- begin ---------------- #!echo a b c d e ----------------- end ------------------------ end ----------------- を実行すると、Linux では $ ./hoge3 a b c d e ./hoge3 となりますが、Solaris では $ ./hoge3 a ./hoge3 となります。 -- 慶應義塾大学 環境情報学部 徳田研究室 楠根雄志 kusune _at_ sfc.wide.ad.jp, kusune _at_ sfc.keio.ac.jp
Follow-Ups:
- [linux-users:20570] Re: シェルスクリプトについてTakashi Ishioka
- [linux-users:20551] Re:シェルスクリプトについてShoushin Liu
- Prev by Subject: [linux-users:20560] Re: シェルスクリプトについて
- Next by Subject: [linux-users:20562] Re: IBM PCに linuxを installできますか ?
- Previous by thread: [linux-users:20560] Re: シェルスクリプトについて
- Next by thread: [linux-users:20570] Re: シェルスクリプトについて
- Indexes:[Main][Thread]