質問: unixでのpathの表現方法 activeperlを導入しperlについて学ぼうと思ったのですが パスの表現方法の違いでいきなり躓いてしまいました・・・ unixにはcドライブ、dドライブという概念がない、ということですが d:\program files\perl\bin\perl.exe このようなパスをunixで表現するにはどうしたらよいのでしょうか? 具体的にいうと「d:\」の部分をどう表現するのでしょうか?
回答: 元々、cとかdとかドライブの概念はディスクを中核にすえたosであるcp/mの時代から引きずっているものです。 unixとはアーキテクチャが異なりますので表現を正確に置き換えることはできません。 元来、unix系のosは全てを「ファイル」として扱います。 ファイルの種類はご存知と思いますが ・通常ファイル(テキストやバイナリ) ・ディレクトリファイル(dosでいうサブディレクトリ/macでいうフォルダ) ・デバイスファイル(キャラクタ型・ブロック型) ・特殊ファイル(ダイナミックリンク:winでいうショートカットとか) 等に分類されますが、そのうちのディスク類はデバイスファイルとなります。 ディスクといえどもシステムにとっては外部機器のひとつにすぎません。 dosやwinにもキーボードやディスプレイにconというファイル名がついているようにunixではディスクにhdaやhdbというファイル名(ディスクのインターフェースで異なりますが・・・)を付け、「ファイルシステム」内に「マウント」して利用しています。 dosやwindowsでも物理ディスクがドライブ名になるわけでなく、1台のディスクでもパーティションを切って使えば1台のディスクにcドライブとdドライブなどとなります。 一般的なunixでは、osのファイルシステムでの大元「rootディレクトリ(/)」にhda0(最後の数字はhdaのパーティションの番号)がマウントされ、その他のドライブ(パーティション)は、サブディレクトリにマウントされて利用されることになります。 ファイルシステムの概念が理解できれば質問に関する矛盾点も理解できるようになると思います。 どうしても強いて変換するならば あなたのマシンがdドライブを起動ディスクにしていると仮定して「d:\program files\perl\bin\perl.exe」は「/program files/perl/bin/perl.exe」になるでしょうし、dドライブが仮にサブディレクトリ「d」にマウントされているなら「/d/program files/perl/bin/perl.exe」のような表現になるかと思います。 perlについて学習される場合はまずはunix系のos上で学習されることをお勧めします。 そこで文字コードの違いを含むシステム上での違いという経験を踏まえた上で他のシステムでのperlを学習されると良いと思います。 ファイルひとつ取ってみても意外と奥が深かったりしますので。