LinuxやMacOSXなどではディレクトリやファイル名にコロンが使用できますが、

環境変数PATHなどのパス区切り文字もコロンとなっています。このため、コロンを
含んだパスは様々な場面で問題が発生するかと思われますが、Windowsのように
パスに使用できない文字(セミコロンなど)がパス区切り文字となっていない理由、
あるいはディレクトリやファイル名にコロンが使用できてしまうことについて歴史的な
経緯などはあるのでしょうか。

回答の条件
  • 1人3回まで
  • 登録:2007/08/10 18:41:23
  • 終了:2007/08/12 01:35:52

ベストアンサー

id:Bookmarker No.2

しおり回答回数191ベストアンサー獲得回数342007/08/10 22:20:00

ポイント25pt

Unix では、パス区切り文字である '/' とC言語で文字列の終端を示す '\0' 以外はファイル名に使用できるので、環境変数 PATH の区切り文字として問題無い文字というのは、そもそも存在しないと思います。

id:castor

ぎゃー、試してみたら「|」とか「>」とか「*」なんかまで、やろうと

思えばファイル名に付けられるんですね。知りませんでした…orz

というか、さすがに百害あって一利なしだと思うのですが、誰も途中で

止めなかったんでしょうか。互換性とかそういう問題ではないような気が

するんですが。。。

勉強になりましたです。ありがとうございましたっ。

2007/08/11 00:44:25

その他の回答(4件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402007/08/10 18:51:56

ポイント26pt

>Windowsのように

>パスに使用できない文字(セミコロンなど)

XPで今試してみたら、

ファイル名にも、フォルダ名にも使えますが(^^;

私の勘違い(全角半角とか)でない限り。


質問の意図が分からないのですが、

Windiwsはドライブレターの文字としてC:\

として:を使うからだと。

id:castor

わ、Linuxばかり気にしていたのでWindowsのほうは勘違いしてました(>_<)

ということは、どちらの環境でもパス区切り文字に「ディレクトリ名などに含まれる

可能性のある文字」が使われているってことなんですね。

質問の意図は、そういう不都合が発生しそうな文字をパス区切り文字にするのは

おかしいのでは、ということでした。ありがとうございましたー。

そういうものだと言われればそうなのかもしれませんが、なんとなく気持ち悪いので

理由があるのかもと思ってみました。WindowsとかLinuxとか関係なしに、もう少しだけ

何かご存知の方情報お待ちしております。

2007/08/10 21:59:05
id:Bookmarker No.2

しおり回答回数191ベストアンサー獲得回数342007/08/10 22:20:00ここでベストアンサー

ポイント25pt

Unix では、パス区切り文字である '/' とC言語で文字列の終端を示す '\0' 以外はファイル名に使用できるので、環境変数 PATH の区切り文字として問題無い文字というのは、そもそも存在しないと思います。

id:castor

ぎゃー、試してみたら「|」とか「>」とか「*」なんかまで、やろうと

思えばファイル名に付けられるんですね。知りませんでした…orz

というか、さすがに百害あって一利なしだと思うのですが、誰も途中で

止めなかったんでしょうか。互換性とかそういう問題ではないような気が

するんですが。。。

勉強になりましたです。ありがとうございましたっ。

2007/08/11 00:44:25
id:hiramatsu_kg No.3

hiramatsu_kg回答回数424ベストアンサー獲得回数32007/08/10 23:27:37

ポイント12pt

dosはfatになって使える文字が増えたんですね。

id:castor

Wikipediaの「ファイルシステム」の項を読む限りでは、ファイルシステムのレベルでは

使用できない文字というのは殆ど無いようでした。OSレベルで制限をかけているのも、

そもそもDOSやWindowsなどの一部のOSだけみたいですね。

2007/08/11 02:03:02
id:minkpa No.4

minkpa回答回数4178ベストアンサー獲得回数552007/08/11 06:33:46

ポイント12pt

使用出来るというより、使用出来ないようにするのが面倒だったというところでしょう。

id:castor

そうですね。

Windowsの場合は互換性を考慮しなければセミコロンを禁止することは

まだできそうですが、Linux/UNIX系の場合は面倒というよりも、OS依存の

コードが介在する余地のない(g)libcのfopenとかを直接呼んでいるような

実装が長年続いてしまったので、もうどうしようもないという状況なの

かなー、という気もしてきました。

シェルレベルで制限しても実用上は充分効果があると思うのですが、実際

それほど致命的というわけでもないので、なかなかそういう流れにはならない

のでしょうね。

2007/08/11 10:18:25
id:Bookmarker No.5

しおり回答回数191ベストアンサー獲得回数342007/08/11 10:17:31

ポイント25pt

環境変数 PATH や、'|', '>', '*' 等の特殊文字は、OS(カーネル) レベルのものではなくシェルレベルのものですよね。

ですから、環境変数 PATH や '|', '>', '*' 等の特殊文字を使わないシェルがあっても良いわけで、そういうシェルではファイル名に ':', '|', '>', '*' 等が(エスケープしないで)使えないと、逆に「なぜ?」という話になると思います。


参考:

id:castor

ありがとうございます。なるほど仰るとおりですね。

OSレベルで制限するのが不適切というのは納得なのですが、であればなおさらシェル

レベルでは(少なくともそのシェル上で特殊文字とされる文字はディレクトリ名などに

使えないという程度は)制限して然るべきだと思いました。

しかし、実際にディレクトリ名に特殊文字を使っている人なんて殆どいないかもなので

意味があるのかと言われると微妙なのですが…。

2007/08/11 11:39:44
  • id:noocyte
    > ぎゃー、試してみたら「|」とか「>」とか「*」なんかまで、やろうと
    > 思えばファイル名に付けられるんですね。知りませんでした…orz
    > というか、さすがに百害あって一利なしだと思うのですが、

    昔々,会社の後輩が UNIX を使っていると,どういうわけか "*" という名前
    (1文字) のファイルができてしまいました.彼はそれを削除しました.
    そしてどうなったかは … ご想像どおり.(実話)
  • id:castor
    うああ、ご愁傷様です(´;ω;`)
    クォートで囲ったりとかはしなかったんですね…

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません