• ベストアンサー

". ./"はどういう意味ですか?

SolarisやLinuxで、 環境変数を設定するのにシェルを作っておいて、 それを実行するようにしています。 たとえば”setenv”だとします。 今まで何気なく、". ./setenv"の用にしていたのですが(こうすれば権限が無くても実行できるので) ふと、”./setenv”の用にしてみると、 有効にならないことがわかりました。 試しにグーグルで". ./"と検索してみたのですが、なにもでませんでした。 ". ./"とはどういう意味なのでしょうか? 今更身の回りの人に聞けません(恥 すみませんが、教えていただけると助かります。

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

Solarisの場合だと例えばsh(1)のリファレンスマニュアル(参考URL)の特殊コマンドの部分に -------8<-------8<-------8<-------8<-------8<-------8<------- . filename filename からコマンドを読み取り実行し、戻ります。PATH によって指定された検索パスを用いて、filename を含むディレクトリを探します。 -------8<-------8<-------8<-------8<-------8<-------8<------- とあります。 なので、読み込み権があればfilenameに書いてある内容を読み込んで実行してくれるというわけです。 その「setenv」が「./setenv」でも実行可能であると前提であれば、お書きになった「. ./setenv」と「./setenv」の違いですが、シェルスクリプトから「. ./setenv」で実行された場合「./setenv」を読み込んで実行するのはシェルスクリプトを実行しているシェルであり、シェルスクリプトから「./setenv」で実行された場合は、「./setenv」の実行のためにシェルの子プロセスが生成されそこで実行され、シェルスクリプトを実行しているプロセスから見れば別プロセスのシェルという事になります。 ところで環境変数はその設定を行ったシェルでのみ有効ですから子プロセスを生成してそこで環境変数を設定を行っても親プロセスは子プロセスとは別プロセスですからその環境変数の設定は有効とはなりません。 お知りになりたかった事は上記のような内容でしょうか?  

参考URL:
http://docs.sun.com/app/docs/doc/819-1210/6n3j74jsj?l=ja&a=view
azicyan
質問者

お礼

詳しくありがとうございます。 じっくり読んで理解したいです。

その他の回答 (3)

  • zsh
  • ベストアンサー率68% (11/16)
回答No.3

「.」はCでいう所のincludeみたいなものです。 「. ./setenv」であれば、カレントディレクトリの setenvというファイルを読込みます。 (リード権だけあればOK) しかし、直接「./setenv」とすると、 コマンドとして実行しようとする為 実行権がないとエラーになります。

azicyan
質問者

お礼

. .となると 「読み込め!」 .だと 「実行!」 なのですね!! わかりました!!

  • keroro001
  • ベストアンサー率23% (71/304)
回答No.2

ディレクトリの階層を相対位置で表す記号です。 ./で今自分のいるディレクトリ ../でひとつ上のディレクトリです ../setenvで実行できるのは、いま自分がいる上のディレクトリにsetenv自身が存在するからです。

azicyan
質問者

補足

えーっと・・・違います。 そうではなくて・・・

  • YSW
  • ベストアンサー率23% (33/141)
回答No.1

一つ上のディレクトリじゃないでしょうか

azicyan
質問者

補足

..ではないです . . です・・・(わかりにくいですね)

関連するQ&A