• ベストアンサー

unix.linuxのシバンについて

UNIX・ Linux初心者です。 現在シェルについて学習している所です。 そこで質問なのですが、シェルスクリプトの1行目にシバンと呼ばれるものを書きますよね? #!/usr/bin/sh や #!/bin/shといったような。 この二つそれぞれ同じ実行結果を返してくれるんですが、/usrの有無の違いが分からないんです。 /usrを付けている時と付けていない時の違いを教えていただけないでしょうか?回答お願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4844/10253)
回答No.1

そこには、実行プログラムのフルパスを書きます。 #!/usr/bin/sh というのは、そのファイルを/usr/bin/shで実行するという意味です。 #!/bin/sh というのは、そのファイルを/bin/shで実行するという意味です。 /usr/bin/sh と /bin/sh が同じファイルであれば、動作は同じです。 あなたの環境ではたまたま同じファイルなのだと思います。 違う環境、例えば、/bin/sh は存在するが/usr/bin/shは存在しない環境だと結果は違います。

その他の回答 (1)

  • bakansky
  • ベストアンサー率48% (3502/7245)
回答No.2

/usr/bin/ には /bin/sh に対するシンボリックリンクが置かれています。それが /usr/bin/sh です。システムによっては /usr/bin/sh のないものもあるようです。

参考URL:
http://rcmdnk.github.io/blog/2016/09/20/computer-linux-bash/

関連するQ&A

  • シェルスクリプトのシバンを複数指定するにはどうすればいいですか?

    シェルスクリプトのシバンを複数指定するにはどうすればいいですか? #!/bin/sh #!/usr/bin/expect このように指定しても2行目のインタプリタを使ったスクリプトが動きません。 他に指定方法がありますか?

  • LINUXサーバーについての質問です。

    LINUXサーバーについての質問です。 http://qiita.com/suin/items/5c4e21fa284497782f71 上記サイトのシェルスクリプトの42行目の PATH=/sbin:/usr/sbin:/bin:/usr/bin は何を意味してるのでしょうか? このシェルスクリプトのファイルの置かれているパスですか? そうであれば、シェルスクリプトには必ずパスを記入するものでしょうか? 教えてください。

  • LINUX(UNIX)

    Winはそこそこ得意です。 LINUXは基本的なコマンドが使える程度です。 1.現在シェルを勉強中ですが実務ではどのようなスクリプトを使っているのでしょうか? いいサンプルなどありまか? 2.apache,sendmail,sambaなど色々ありますが、 覚える順番で効果的なものとかあるのでしょうか? 重要(よく使うもの)順とか・・・ 3、Linux(UNIX)でいい書籍を探しているのですが なかなかこれというものがありません。 いいものがあれば教えてください。 (できればWEBも) 4.その他ご意見・アドバイス等 宜しくお願いします。

  • Linuxでシェルスクリプトがフルパスだと実行できない

    Linuxでシェルスクリプトがフルパスだと実行できない こんにちは 現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。 中身は例えば #!bin/sh echo "hello" とし、ファイル名をtest.shとします。 実行時にカレントからだと上手くいきます。 ./test.sh ただし、フルパスで実行するとうまくいきません。 ./home/user/test.sh エラーは以下 bash: ./home/dv3/tet.sh:No such file or directory 所有者はrootでグループもrootにしてあります。 シェルの権限は755にして、rootで実行しています。 なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか? パスが必要なコマンドも入っていないのに。。。 どなたかご教授いただけると幸いです。 宜しくお願い致します。

  • UNIXのシェル

    シェルに関して質問です。 0526とか0525のところは一日ごとにフォルダが作成されます。 unix\yasu\0526\hobby\test.txt unix\yasu\0526\hobby\test.txt unix\tomo\0525\hobby\test.txt unix\tomo\0525\hobby\test.txt ./check.sh MMDD 実行するときにMMDDのところに日付を入れてフォルダがあればコマンド1を実行するようにしたいです。 引数に指定した文字を判定するにはどうしたらいいのでしょうか? よろしくお願いします。 ----------------------------- #シェルの名前は「check.sh」です #! /bin/sh if [ $1 = "日付" ] ; then コマンド1 else コマンド2 fi -----------------------------

  • "${0%/*}"の内容について

    linuxで、シェルスクリプトを作成しているのですが、 あるページを参考にしていたところ、 "${0%/*}" 内容がでてきました。(参考ページは、cd "${0%/*}" と記述されていました。) 確認のために、下記ファイルを作成し、 echo "${0%/*}" でどういった内容になるのか確認してみました。 ■シェルスクリプトの内容(ファイル:kakunin.sh) #!/bin/sh echo "${0%/*}" (1)shで、シェルスクリプト実行 # sh kakunin.sh kakunin.sh ←結果 (2).(ドット)により実行。 # ./kakunin.sh . ←結果(. ドット) 結果が異なっています。 "${0%/*}"は何を意味しているのでしょうか。 なぜ、(1)と(2)で、実行結果が異なるのでしょうか。 御教示お願いします。

  • linuxのpathと別名的な事について

    linuxのpathと別名的な事について os:cent os postgresをインストールした環境があります。 ある環境では /usr/local/pgsql/bin/にpsqlがいて シェルで「/usr/local/pgsql/bin/psql」と記述しているスクリプトがあります。 これを別の環境に持っていったのですが、そこでは /usr/bin/にpsqlがいます。 全部書き換えるのも面倒ですので、 「/usr/local/pgsql/bin/psql」と書かれた内容を サーバーの設定で「/usr/bin/psql」と読みかえて動いてくれれば助かります。 要するに、 実行する環境と、試験する環境でパスが異なるので、 スクリプトに手を付けずに試験環境の設定を操作して試験がしたいという事です。 可能でしょうか?

  • UNIXとLinuxの違いを教えてください

    UNIXとLinuxの違いをパソコン初心者にもわかるように教えてください。お願いします。

  • なぜLinuxでKornシェルが使えるのでしょうか?

    Linux初心者です。 シェルについてわからないことがあり、質問させていただきます。 Linux(Red Hatを使っています)の /bin/shと/bin/cshは、それぞれ/bin/bash、/bin/tcshのシンボリックリンクファイル、 なのに対して、なぜkshだけは/bin/kshそのままなのでしょうか? また、KornシェルはAT&T社が開発したものだそうですが、 これはLinuxで使う際にライセンスの問題に触れないのでしょうか? よろしくお願いいたします。

  • LinuxでKornシェルが使えるのは何故でしょうか。

    Linux初心者です。 シェルについてわからないことがあり、質問させていただきます。 Linux(Red Hatを使っています)の /bin/shと/bin/cshは、それぞれ/bin/bash、/bin/tcshのシンボリックリンクファイル、 なのに対して、なぜkshだけは/bin/kshそのままなのでしょうか? また、KornシェルはAT&T社が開発したものだそうですが、 これはLinuxで使う際にライセンスの問題に触れないのでしょうか? よろしくお願いいたします。