• ベストアンサー

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

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

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

  • ベストアンサー
回答No.3

たとえば ls とコマンド打つと実行されますが、本当は/bin/lsです。 なぜこれがlsで実行されるかというと先の方が記載している環境変数 PATHに /bin: がセットされているからです。 なので仮にこのPATHに/binがセットされてない場合、/bin/ls とフルパスでコマンド打たないと実行されません。 lsだけ打ってもそんなコマンドないよって言われます。 そんなわけでPATHを設定しています。 逆にシェルスクリプト内のコマンドをすべてフルパスで記載するなら、PATHの設定いらないということになります。 現在設定されいる環境変数は echo $PATH で確認できます。

shousen412
質問者

お礼

ご回答ありがとうございます! 大変勉強になりました。

その他の回答 (2)

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

環境変数です。毎回記述を避けるための処理です。実行環境と言っていいでしょう。 まあ決まり事のようなものです。

shousen412
質問者

お礼

ご回答ありがとうございます! 大変勉強になりました。

  • t_ohta
  • ベストアンサー率38% (5041/13169)
回答No.1

/sbin、/usr/sbin、/bin、/usr/bin ディレクトリの中には各種コマンド等の実行ファイルが入っています。 スクリプト内で何気なく使っているコマンドも、多くはどこかのディレクトリに実体があるのでパスを通しているのです。 また、同じコマンドでも構築方法により /bin に入っている時もあれば /usr/bin に入っている場合があるといった違いが生じるので、絶対パスでコマンドを書くよりもパスを通しておいてコマンド名だけを記述する方が汎用性が高まります。

shousen412
質問者

お礼

ご回答ありがとうございます! 大変勉強になりました。

関連するQ&A

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

    LINUXサーバーについての質問です。 http://qiita.com/suin/items/5c4e21fa284497782f71 上記サイトの「ツッコミをうけての変更」の部分の意味がわかりません。 「-m multiport の場合、dports, sports "s" じゃないでしょうか」 とはどのような意味でしょうか? 「dports, sports 」は"s"のようにダブルクオテーションで囲むのですか? iptables.shに出てくるすべての-m multiportを ダブルクオテーションに修正しなければならないのでしょうか? 他のiptableの説明のサイトを見ても -m multiport --dport"s"のようにダブルクオテーションで「s」を囲むとは書いてありません。 教えて下さい。

  • unix.linuxのシバンについて

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

  • Linuxのバックアップシェルについて教えて下さい

    Linuxで、簡単なバックアップのシェルを作成する必要があり、今勉強を始めました。 これから確り勉強しますので、参考としてやりたいことのスクリプト例を教えて頂けませんでしょうか。 やりたいことは、Linuxサーバー内のフォルダAをファイルサーバー上のフォルダBへ日次でコピーです。 この時、フォルダAまでのパスには、日付名が入っており毎日変わります。シェル実行日の1日前のデータをコピーしたい場合、まずパスの作り方がわかりません。 PATH=/usr/local/sbin:/usr/bin:/bin #昨日の日付の取得 YESTERDAY= DATE +%Y%m%d #バックアップ対象のパス取得 BACKUP-PATH= 1G/昨日の日付/log/ ↑              ここがわかりません。$YESTERDAYと入れてみましたがダメでした。 #バックアップ先のパス取得 TARGET= \\filseerver/1G/日付/log ↑      こんな感じで外部の保存先のパスはかけるのでしょうか? バックアップ処理 ○○日前のデータは削除 全体ではこんな感じになると思うのですが、具体的なスクリプトの説明をお願いできますでしょうか。 またよい参考サイトがあれば是非教えて下さい。 宜しくお願い致します。

  • 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」と読みかえて動いてくれれば助かります。 要するに、 実行する環境と、試験する環境でパスが異なるので、 スクリプトに手を付けずに試験環境の設定を操作して試験がしたいという事です。 可能でしょうか?

  • linuxコマンドについて

    かなりのLinux初心者です。ですので本文中にも間違いがあるかもしれません。 Linuxのコマンドで、各コマンドというのはbinとかsbinの中にあるんですよね? そしてpathが通っていないと、/usr/local~とすべて記述しなくてはいけませんよね? そこで、質問です。 今、bin内にあるコマンド(who)をあるディレクトリで実行したい時、このpathの通し方を教えてもらいたいのです。 次の質問は、例えばwhoコマンドがどこのフォルダ(binやsbin)内にあるか分からない時、探し方を教えてもらいたいのです。 宜しくお願いします。 なにぶん初心者なので説明に不十分なところがあると思いますが、その時は補足要求してください。

  • シェルスクリプトの1行目

    シェルスクリプトの1行目に#!/bin/bashと書くと思うのですが 環境によってbashのパスが違うのですが、そのような場合は2つ書くことは可能でしょうか? 例えばLinuxなんかは#!/bin/bashですよね? Macだと#!/bin/bashだと3系なので古いので5系をインストールすると#!/usr/local/bin/bashになるんです 1台のパソコンで使ってる分には問題ないですが他の環境で使う場合2つ書くにはどうしたら良いでしょうか?

  • パス(PATH)の設定ファイルについて

    OSはRed Hat Linux 9 を使用しております。 また、シェルはbashを使用しております。 ユーザがシステムにログインする際は、通常ですと /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ファイルを読込、パス(PATH)の設定を行うと思いますが、 sshでrootユーザでシステムにログインした際は、 「echo $PATH」の結果は以下でした。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/sbin su -で再度rootユーザでログインした際、もしくは、他ユーザからsu -でログインすると 「echo $PATH」の結果は以下でした。 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/sbin ログインの仕方でパス(PATH)に違いがあります。 また、「/usr/local/bin」をパス(PATH)として設定している記述が 上記ファイルに見当たりません。 http://sakaguch.com/PastBBS/0038/B0018808.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=800405 等のサイトを参考に、以下ディレクトリ配下を確認しましても /etc/profile.d /etc/rc.d/init.d /etc/rc.d/rc3.d 「/usr/local/bin」をパス(PATH)として設定している記述が 見当たりません。 ログインの仕方でパス(PATH)に何故違いがあるのか、 また「/usr/local/bin」をパス(PATH)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • シェルコマンドでphpを実行したい!

     さくらインターネットでcron設定を使って月末になると起動するphpを読み込もうとしたいのですが、どうやっても上手くいきません。 いろいろと参考になるサイトはあるのですが、動かない理由がわからないのでどなたか教えてください。  まず、cron設定で設定しているシェルのファイルが置いてあるパスに間違いはありません。  次にシェルファイルに書いてあるコードは以下です。 #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin cd /home/自分のID/www/自分で作ったフォルダ/; ./自分で作ったフォルダ/phpファイル という風に書いてあります。 ところが、時間になるとこれが実行されず、 サーバーよりエラーメールが届きます。 [not found]と一言。 …最初、シェルファイルの階層が間違っているかと思ったのですが、 どう見てもあってますし…中身が問題なのかなぁ、と考えます。 何かわかれば、是非教えてください。 お願いします。

    • ベストアンサー
    • PHP
  • シェル変数(path)の挙動がわかりません

    シェル変数の挙動がわからなくて困っています。 以下のような3ファイルがあります。 % cat /tmp/test_config.sh #!/opt/local/bin/zsh path=($path /tmp) % cat /tmp/test.sh #!/opt/local/bin/zsh . /tmp/test_config.sh echo $PATH echo $path /tmp/test2.sh % cat /tmp/test2.sh #!/opt/local/bin/zsh echo $PATH echo $path which test.sh これを、所有者のユーザで実行するのとsu -c で実行するので挙動が変わります。 % /tmp/test.sh /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/tmp /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/local/bin /opt/local/sbin /tmp /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/tmp /usr/bin /bin /usr/sbin /sbin /usr/local/bin /opt/local/bin /opt/local/sbin /tmp /tmp/test.sh % sudo su - hogehoge -c /tmp/test.sh /bin:/usr/bin:/usr/ucb:/usr/local/bin:/tmp /bin /usr/bin /usr/ucb /usr/local/bin /tmp /bin:/usr/bin:/usr/ucb:/usr/local/bin /bin /usr/bin /usr/ucb /usr/local/bin test.sh not found この挙動の違いは、何から産まれるんでしょう? .zshrc でそういう設定ができるんでしょうか? .zshenv は使ってません。 (なお、環境変数$PATHを使えば目的は果たせると言うのはわかっています)

  • Developer Tools

    ディベロッパーツールのコマンドを絶対パスでなくても認識できるように、シェル環境のカスタマイズをしたのですが、うまくいきません。 実行したこと。 setenv PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/Developer/Tools 上記を実行すれば、認識されますが、再起動すると最初の設定に戻ってしまうので、 setenv PATH /bin:/sbin:(中略):/Developer/Tools ~/.tcshrc でとすると、 setenv :too many argument と表示され、設定はかえられません。 いろいろ検索してみましたが、わかりません。 お願いします。長文すいません。

    • 締切済み
    • Mac