• ベストアンサー

UnixでのPathの表現方法

ActivePerlを導入しPerlについて学ぼうと思ったのですが パスの表現方法の違いでいきなり躓いてしまいました・・・ UnixにはCドライブ、Dドライブという概念がない、ということですが D:\Program Files\Perl\bin\perl.exe このようなパスをUnixで表現するにはどうしたらよいのでしょうか? 具体的にいうと「D:\」の部分をどう表現するのでしょうか?

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

元々、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を学習されると良いと思います。 ファイルひとつ取ってみても意外と奥が深かったりしますので。

その他の回答 (1)

noname#208124
noname#208124
回答No.1

表現の意味が分かりません UNIX系列のOSでファイルパスとして使うならD:なんてありませんし、文字列なら\\にするだけです WindowsでPerlを使うならパスは/でも\\区切りでもどちらでも好きに書けます Windows版Apacheでの一行目ならScriptInterpreterSourceディレクティブ使ってた方が楽です

関連するQ&A

  • CGIのパス(Apache winで)

    初歩的な質問ですみません。 環境 windows2000 サーバー Apache/1.3.20 ActivePerl-5.6.1.626 をインストールが完了して、CGIを動作させようとしています。 ApacheでのHTML動作はできています。 CGIプログラムの一行目に #!/usr/local/bin/perl と記載されています。 その文字列を #!c:/bin/perl.exe に変更して現在動作させています。 しかし、ISPのHPスペースのperlへのパスは #!/usr/local/bin/perl なので、転送前に一行目を変更しています。 変更しなくても良いように ApacheでのCGIのパスを #!/usr/local/bin/perl で動作する方法を どなたか教えていただけないでしょうか? ちなみに Perlは[c:\bin]にインストールしてあります。 Apacheは[g:\apache]にインストールしてあります。

  • Perlの実行パスを自動で変更する方法はありませんか?

    Perlで1行目に書く実行パスを自動で変更することはできないでしょうか? 例えば、自分のPCで動かす場合は、 #!c:/Program Files/Perl/bin/perl を有効にし、 ソースをそのままサーバにアップしたら、 #!/usr/bin/perl に切り替わるような記述法があれば、教えて頂けないでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • ActivePerlでWindows上のパスを記述する書き方

    ActivePerlをWindowsで動かすとき、ファイルのパスを指定するのに "C:\\work\\perl"のように、フォルダとフォルダの区切りには「\\」を使います。 これを UNIX上でPerl CGIを動かすときのように「/」に換えて、"C:/work/perl"としても問題なく動いているようです。 ActivePerlで"C:/work/perl"と書くことは、問題ないのでしょうか?それとも推奨されない行為でしょうか?]

    • ベストアンサー
    • Perl
  • パスを通したはずなのに「パスは見つかりません」

    お世話になります。始めてプログラミングを勉強しています。 環境はWindws XPHome Edition Ver2002、SP2 コンパイラとしてダウンロードしたのは、 「Borland C++compiler」です。 インストールして、pathの環境変数の最後にbin;c:\Borland\Bcc55\binと付けました。 もとの環境変数↓ (%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Common Files\GTK\2.0 )  実際コマンドラインでメモ帳を開こうと>C:\WINDWS\NOTEPAD.EXEと打ち込んでも、 指定されたパスは見付かりませんとでます。 確かにCドライブの「WINDWS」フォルダの中にNOTEPAD.EXEは存在します。 他にもカレントディレクトリを変えようとして、>cd ○○と打っても、 確かにあるはずなのに「指定されたパスはみつかりません」になってしまいます。 打ち込んだ文字や環境変数に加えた文字に間違いはないかと、かなり確認したり似たような質問を検索してみたのですが、どうも分からずお手上げ状態です。 よろしければ教えていただけないでしょうか。 ちなみに「10日でおぼえるC言語」というテキストどおりにやっています。

  • windows環境でのperlのパス

    以下の環境で開発をしています。 OS: windows XP ActivePerl 5.8.8 apache 2.0.64 レンタルサーバで利用しやすいようにperlスクリプトの第1行目に #!/usr/bin/perl を記述していますが、ActivePerl のありどころが C:\dev\perl\bin\なので第1行目を #!/dev/perl/bin/perl  にしなければなりません。 #!/usr/bin/perlの記述をそのまま使う為に巷でよく言われているようなwindowsのジャンクション機能を利用しています。 Cドライブ直下に「usr」ホルダを作り、ここにC:\dev\perl\bin\のジャンクションを設定しました。 するとC:\usr\を覗くとbin\が存在します。つまりC:\dev\perl\bin\はC:\usr\bin\でアクセスできるようになります。 しかしこの状態で#!/usr/bin/perlの記述をそのまま使うと500エラーが出ます。 これ以外に何か良い方法はございませんでしょうか? また同じような開発環境の皆様はperlスクリプトの第1行目をどのように対策されていますでしょうか? 宜しく御教授お願いいたします。

    • ベストアンサー
    • Perl
  • PATHの設定がうまくいきません。

    JAVA初心者です。JAVAをはじめようとJDKのDCが添付されている入門書を購入し、インストールしました。JAVAソースファイルをコンパイルしようとしてMS-DOSを起動し、説明通りしてるのですが、javac first.java(2行目です) と入力しEnterを押すと下記のようなコメントが出てきます。 ”準備ができていません。読み取り中、ドライブE” 結局、CD-ROMを入れるとコンパイルするとできるのですが、皆さんはコンパイルする際は常にCDを入れているのでしょうか? PATHの設定がおかしいのでしょうか。 AUTOEXEC.BATを開くと C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCAN.EXE C:\ @IF ERRORLEVEL 1 PAUSE @ECHO OFF loadhigh c:\windows\COMMAND\nlsfunc.exe c:\windows\country.sys PATH E:\OFFICE;C:\FJUTY; REM Environment Settings For McAfee VirusScan SET PATH=%PATH%;C:\PROGRA~1\NETWOR~1\MCAFEE~1 path "%path%;C:\Perl\bin;" path "%path%;C:\Perl\bin;" path "%path%;C:\Perl\bin;" path "%path%;C:\jdk1.3\bin;" となっていました。 私は5行目が怪しいと感じていますが、勝手に触るとつぶれそうなので ご存知の方、PATH設定に詳しい方、アドバイス宜しくお願いします。

  • perlパス

    Windows2000機でWebServerを建てたのですが、CGIが認識しません。 WEBサーバーのクライアントソフトはApacheで 普通にHTMLは見れています。 perlをインストールした場所は C:\usr\local で VerはActivePerl 5.8.8.822 for Windows (x86)です。 場所は↑なのでCGIファイルのperlのパスはそのままいじらず、 perlのパスは#!/usr/local/bin/perl です。 一応#!C:/~以下   もやりましたがだめで、 CGIのテキストが表示されています。 色々調べてやったのですがどうもうまくいかず 教えていただけませんか

  • Perlのパス

    レンタルサーバーのCGIの説明で、「1.perl のパスは、/usr/bin/perl です。2.プログラムの先頭の記述は必ず、#!/usr/bin/perl となります。」って書いてあるんですけど、これを使用する場合、 http://www.kent-web.com/data/cart.html たぶん、admin.cgi , cart.cgi , order.cgi を エディタ で開いて以下の箇所をあたまの部分、#!/usr/bin/perl を変えればいいんですかね?それで1.の/usr/bin/perl は何処に書くのかな?それとも説明 の前置きですかね?「1.perl のパスは、」という意味はリンクがこうなるよ!って意味ですかね? ただま、KENT WEBみながら苦戦してます。 シロウトですいません。

    • ベストアンサー
    • Perl
  • Java 指定されたパスが見つかりませんのエラー

    Windows 8 (x64)を使っています。 jdk-6u45-windows-x64をダウンロードしてJavaを使っていましたが、 しばらくJavaを使ってなかったのですが 久しぶりにコマンドプロンプトでディレクトリ移動をしようとしたら 指定されたパスが見つかりません  というエラーが出ています。 これってPATHが通っていないというやつなんでしょうか? PHPやらWordPressやらApacheを入れてから出た気がします。 C:\Program Files\Java\jdk1.6.0_45\binのフォルダにjavac.exeファイルは ちゃんとあります。コマンドプロンプトでバージョン確認も出来ます。 今のPATHは C:\Program Files\Java\jdk1.6.0_45\bin;C:\Users\自分の名前\AppData\Local\Box\Box Edit\c:¥php;\C:\Program Files\MySQL\MySQL Server 5.5\lib です。 PATHが間違ってますか?

    • ベストアンサー
    • Java
  • IIS6.0でcgiが認識できない

    IIS6.0でcgiが認識できないのですが 以下の構成でどうなのでしょうか? 仮想パスは認識できているようなので、 http://*.*.*.*/cgi-bin/index.html は表示できます。 ■環境:win2k3/ActivePerl5.8.4/IIS6.0 #################################### アプリケーションの構成マッピング ------------------------------------ ●ISAPI拡張をキャッシュする(checked) ●アプリケーションの拡張子 .pl D:\user\local\bin\perl.exe GET,POST .cgi D:\user\local\bin\perl.exe GET,POST ※スクリプトエンジン(checked) ※ファイルの存在を確認する(checked) #################################### perlの実行ファイルは,ググった結果、以下のものも試してみましたが だめでした。 perlIS.dll perl5.8.4.exe perl.exe "%s" %s どうぞお願いします。