(WorkingDirectory から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/08/04 13:53 UTC 版)
カレントディレクトリ(英: current directory)とは、実行中のソフトウェアなどがストレージ(外部記憶装置)のファイルシステム中で現在位置として指し示しているディレクトリのこと[1]。階層型ファイルシステムで使われる用語である。current directoryを日本語に翻訳するとすれば「現行ディレクトリ」だが、あまり使われることはない。ワーキングディレクトリ(英: working directory、作業ディレクトリ)またはカレントワーキングディレクトリ(英: current working directory、現在の作業ディレクトリ)とも表記される。
階層構造のファイルシステムにおける個々のディレクトリやファイルは、パス(path)という文字列で識別されている。
ファイルやディレクトリのパス指定方法には「絶対パス」と「相対パス」がある。絶対パスは、先頭をルートディレクトリ(Unix系の場合は"/"、DOS/Windowsの場合はドライブレターを含む"C:\"など)で始め、パスの文字列を完全に指定する方式であり、フルパスとも呼ばれる。相対パスは単なるファイル名"sample.txt"や、"notes/sample.txt"または"../sample.txt"のようにルートからのフルパスではない方式のパス文字列のことである。ソフトウェアのプロセスがopenシステムコールや標準Cライブラリのfopen()関数などによってあるファイルを参照しようとするとき、指定パス文字列が相対パス形式であった場合、そのパスはカレントディレクトリから始まる相対的なものと解釈される。つまりカレントディレクトリは、相対パスでファイルやディレクトリを指定する場合の基準位置となる[1]。一般的にカレントディレクトリはプロセスごとに設定され、プロセス内の全スレッドで共有される[2][3][4]。あるプロセスが別のプロセスから起動されるとき、子プロセスは既定で親プロセスのカレントディレクトリを継承する[5]。
たとえばLinuxのコマンドラインシェルにおいて、カレントディレクトリが「/home/JohnSmith」の状態で、相対パスを使って「touch sample.txt」というコマンドを実行すると、"/home/JohnSmith/sample.txt"のタイムスタンプを変更する(該当ファイルが存在しなければ新規作成する)。これは、絶対パスを使って「touch /home/JohnSmith/sample.txt」というコマンドを実行することに相当する。
MS-DOSやMicrosoft Windowsの場合、カレントディレクトリの他にカレントドライブの概念もある[6]。また、Windowsのショートカットファイル(.lnk)では「作業フォルダー」という設定項目があるが、ショートカットを使ってアプリを起動したときのカレントディレクトリをこれにより設定することができる。なお、英語版Windowsでの設定項目名は「Start in」である。
ダイナミックリンクライブラリ(DLL)の探索候補ディレクトリには、通例カレントディレクトリも含まれるが、カレントディレクトリの探索優先順位が高い場合、悪意のあるDLLインジェクションによるセキュリティホール(脆弱性)となってしまいやすい[7]。Microsoft Windows XP SP2以降では、カレントディレクトリの優先順位を下げる安全なDLL探索モードが既定で有効になっている[8][9]。
コマンドの詳細な仕様はオペレーティングシステム (OS) などによって異なる。個別に説明する。
cd - 引数で相対パスまたは絶対パスを指定することで変更が可能。
初期のUNIXシェルでは、カレントディレクトリを変更するコマンドはchdirであったが、その後cdに変化していった。
chdirというコマンドであった[10]。cdとchdirの両方が使用可能となっている[11]。cdのみであったが[12]、chdirも使用可能だったとされる[13]。2024年現在も、たとえばtcshではcdとchdirともに利用可能である[14]。
cd <PathString>あるいはchdir <PathString>(引数でパスを与える)
cdあるいはchdir(引数なし)
Windowsでは、chdirはまだ残されているものの、cdで代替されている[15]。
通常のcdコマンドでは、ドライブをまたいだカレントディレクトリの変更はできない。カレントディレクトリをCドライブのディレクトリからDドライブのディレクトリに変更する場合は、まずD:のようにコマンドなしでドライブ名と区切り文字コロンのみを入力し、カレントドライブを変更する必要がある。これによってカレントディレクトリはドライブのルートに変更されるので、あとはcdコマンドで所望のディレクトリに変更する。あるいは、cd /d D:\Photosのようにcdコマンドに/dオプションを付けることでドライブをまたいだ変更ができる[16][17]。
Set-Location -Path <PathString>あるいはcd <PathString>
Get-Locationあるいはpwd
cmd.exeのように、カレントディレクトリの変更にはcdやchdirを使うこともできるが、引数を指定しなかった場合はエコーを返さない。代わりにpwdがGet-Locationコマンドレットのエイリアスとして用意されている。