- ベストアンサー
シェルスクリプトの切り替え?
シェルには種類がありユーザーはそれを切り替えることによって好みのシェルを自由に選択することが出来る。 というのはわかりました。 が、シェルスクリプトを記述して実行する場合はどうなんでしょう。 bornシェルで記述したシェルスクリプトをcshから実行できるのでしょうか。 実行者とスクリプト記述者が同じシェル環境で操作しないといけないのかと思い質問しています。 ひょっとして意味のわからない質問かも知れませんがお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2さんのヒントから解決するかもしれませんが、補足します。 シェルスクリプトを書く際に以下の2つの条件を満たせば 現在使用中のシェルにかかわらず、 スクリプトを処理するシェルを指定することが出来ます。 (1)シェルスクリプトファイルの1行目を「#! /bin/sh」とする。 /bin/shの部分にそのスクリプトで使用するシェルを指定します。 また必ずフルパスで書く必要があります。 (2)シェルスクリプトファイルのパーミッションに実行権限(x)を 付ける。(例:「chmod 755 hoge.sh」) また、蛇足ですが、上記のようにしなくても、 「sh hoge.sh」のようにすれば、入力文字数は増えますが、 実行するシェルは実行時に指定できます。 >cat hoge.sh (←shでは動くが、cshでは動かないスクリプトです。) #! /bin/sh if [ -x /bin/sh ] ; then echo "/bin/sh exist" fi >ls -l hoge.sh (←実行権限(x)がついていることを確認します。) -rwxr-xr-x 1 yamakawa yamakawa 61 12 27 13:06 hoge.sh* >./hoge.sh /bin/sh exist >sh hoge.sh /bin/sh exist >csh hoge.sh if: Expression Syntax.
その他の回答 (2)
ヒント #! /bin/sh
- yambejp
- ベストアンサー率51% (3827/7415)
>bornシェルで記述したシェルスクリプトをcshから実行できるのでしょうか。 文法が違うのでやめておいた方がよいでしょう。 そもそもスクリプトで実行する場合、対話的でもないので わざわざ違うshを指定する必要もないし。
お礼
わざわざといわれてしまったらそれまでですね・・・。 お聞きしたかったのは、 1.現場環境として完全にシェルが統一されていているのか 2.別シェルが入り込む余地があるのか ってことなんです。 現場で聞けって話になっちゃいますけど、ここで聞いちゃいますw
お礼
はー、なるほど。よくわかりました。 面白いですね。 こちらに実行環境があればよかったのですが、 それがなかったのでお聞きしました。 ホントに有難うございました。