こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

投稿日時 - 2005-06-24 16:40:30

QNo.1470522

暇なときに回答ください

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

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

投稿日時 - 2005-06-24 18:13:52

お礼

詳しくありがとうございます。

じっくり読んで理解したいです。

投稿日時 - 2005-06-24 21:19:40

ANo.4

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

zsh

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

投稿日時 - 2005-06-24 17:02:41

お礼

. .となると
「読み込め!」
.だと
「実行!」

なのですね!!

わかりました!!

投稿日時 - 2005-06-24 21:18:44

ANo.2

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

投稿日時 - 2005-06-24 16:48:32

補足

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

投稿日時 - 2005-06-24 21:17:02

ANo.1

YSW

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

投稿日時 - 2005-06-24 16:44:43

補足

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

投稿日時 - 2005-06-24 21:16:24

あなたにオススメの質問