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

解決済みの質問

同じ階層内を意味する「./」を書く必要性とは?

一つ上の階層の・・・という意味の「../ファイル名」に対して、同じ階層内の・・・という意味の「./ファイル名」がありますよね。

後者はただ「ファイル名」と書いても同じ意味になると思うのですが、「./」を書く意味って何なんでしょうか?

もし「./ファイル名」と表記しなければならない状況があるとすればどんな時でしょうか?
参考までに知っている方がいらっしゃったら教えて下さい。

投稿日時 - 2006-06-12 16:11:30

QNo.2211179

暇なときに回答ください

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

がると申します。
./を明示的に書くのは基本的に「セキュリティ」が理由です。
そうですねぇ。例えば。./がpathに入っているために、./を書かない癖が付いているとします。
いつも自分のホームディレクトリにある、hogeという実行ファイルを
hoge
と実行してみました。普通に実行されます。
………で。もし、pathが
/home/akui/yabai/
ってpath(悪意ある攻撃者が仕込んだディレクトリ&ファイル)を先に指し示していた場合。
/home/my/hoge
を起動しているつもりで、実は
/home/akui/yabai/hoge
を実行していた、なんてことが起き得てしまいます。

そのために、特にセキュリティ上の理由などから、原則フルパスで打ち込むか、最低でも相対ディレクトリ指定で、./からスタートさせてコマンドを打つのが通例となっています。

投稿日時 - 2006-06-12 18:45:10

お礼

> /home/my/hoge
> を起動しているつもりで、実は
> /home/akui/yabai/hoge
> を実行していた、なんてことが起き得てしまいます。

具体的な例と理由付きで、大変わかりやすかったです。
セキュリティのため、確かに必要そうですね。
とても参考になりました。

投稿日時 - 2006-06-13 09:19:57

ANo.2

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

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

回答(2)

ANo.1

明示的にパスを記述しているということで意味があると思います。
例えばunixなどのシェルにおいて、
カレントにfilenameという実行プログラムがあるとき、
filename
と打っても実行できません。コマンドがないと言われるでしょう。
./filename
と実行します。
(ふつうカレントをPATHに含めないので)

どこかPATHの通っているところに同名のコマンドがあったらやらしいですよね。
しかし./があればこれが動作するのは明らかですね。

投稿日時 - 2006-06-12 17:02:46

お礼

> 例えばunixなどのシェルにおいて、
> カレントにfilenameという実行プログラムがあるとき、

なるほど。
自分の知っている範囲でしか考えていなかったので、
そういう場合があるとは知りませんでした。

参考になりました。ありがとうございます。

投稿日時 - 2006-06-13 09:17:40

あなたにオススメの質問