カレントディレクトリ

カレントディレクトリ（）とは、実行中のソフトウェアなどがストレージ（外部記憶装置）のファイルシステム中で現在位置として指し示しているディレクトリのこと。階層型ファイルシステムで使われる用語である。を日本語に翻訳するとすれば「現行ディレクトリ」だが、あまり使われることはない。ワーキングディレクトリ（、作業ディレクトリ）またはカレントワーキングディレクトリ（、現在の作業ディレクトリ）とも表記される。

 概要 
階層構造のファイルシステムにおける個々のディレクトリやファイルは、パス（path）という文字列で識別されている。

ファイルやディレクトリのパス指定方法には「絶対パス」と「相対パス」がある。絶対パスは、先頭をルートディレクトリ（Unix系の場合は"/"、DOSやWindowsの場合はドライブレターを含む"C:\"など）で始め、パスの文字列を完全に指定する方式であり、フルパスとも呼ばれる。相対パスは単なるファイル名"sample.txt"や、"notes/sample.txt"または"../sample.txt"のようにルートからのフルパスではない方式のパス文字列のことである。ソフトウェアのプロセスがopenシステムコールや標準Cライブラリのfopen()関数などによってあるファイルを参照しようとするとき、指定パス文字列が相対パス形式であった場合、そのパスはカレントディレクトリから始まる相対的なものと解釈される。つまりカレントディレクトリは、相対パスでファイルやディレクトリを指定する場合の基準位置となる。一般的にカレントディレクトリはプロセスごとに設定され、プロセス内の全スレッドで共有されるSetCurrentDirectory function (winbase.h) - Win32 apps | Microsoft LearnHome directory - IBM Documentationchdir() - C Library Reference | BlackBerry QNX。あるプロセスが別のプロセスから起動されるとき、子プロセスは既定で親プロセスのカレントディレクトリを継承するInheritance (Processes and Threads) - Win32 apps | Microsoft Learn。

たとえばLinuxのコマンドラインシェルにおいて、カレントディレクトリが「/home/JohnSmith」の状態で、相対パスを使って「」というコマンドを実行すると、"/home/JohnSmith/sample.txt"のタイムスタンプを変更する（該当ファイルが存在しなければ新規作成する）。これは、絶対パスを使って「」というコマンドを実行することに相当する。

DOSやWindowsの場合、カレントディレクトリの他にカレントドライブの概念もある。また、Windowsのショートカットファイル（.lnk）では「作業フォルダー」という設定項目があるが、ショートカットを使ってアプリを起動したときのカレントディレクトリをこれにより設定することができる。なお、英語版Windowsでの設定項目名は「Start in」である。

ダイナミックリンクライブラリ（DLL）の探索候補ディレクトリには、通例カレントディレクトリも含まれるが、カレントディレクトリの探索優先順位が高い場合、悪意のあるDLLインジェクションによるセキュリティホール（脆弱性）となってしまいやすいWindowsのDLL呼び出し順序に由来するセキュリティ・ホール | 日経クロステック（xTECH）。Microsoft Windows XP SP2以降では、カレントディレクトリの優先順位を下げる安全なDLL探索モードが既定で有効になっているDynamic-Link Library Security - Win32 apps | Microsoft LearnDynamic-link library search order - Win32 apps | Microsoft Learn。

 関連コマンド 
コマンドの詳細な仕様はオペレーティングシステム (OS) などによって異なる。個別に説明する。

 POSIX 
やLinuxのシェルの場合。
 カレントディレクトリの変更
cd - 引数で相対パスまたは絶対パスを指定することで変更が可能。
カレントディレクトリのフルパス表示
pwd

初期のUNIXシェルでは、カレントディレクトリを変更するコマンドはchdirであったが、その後cdに変化していった。

 1971年のThompson Shellではchdirというコマンドであった。
 ではcdとchdirの両方が使用可能となっている。
 1979年のBourne Shellでは、マニュアルの記載はcdのみであったが、chdirも使用可能だったとされる。

2024年現在も、たとえばtcshではcdとchdirともに利用可能である。

 DOS/Windows 
 DOS/COMMAND.COM/cmd.exe
 カレントディレクトリの変更
 あるいは（引数でパスを与える）
 カレントディレクトリのフルパス表示
 あるいは（引数なし）
 もともと入力待ちの状態（コマンドプロンプトの状態）でカレントディレクトリのフルパスが表示される仕様になっているので、通常は引数なしコマンドを使う必要はないが、エコーを返すのでリダイレクトに使うこともできる。

Windowsでは、chdirはまだ残されているものの、cdで代替されているchdir | Microsoft Learn。

通常のcdコマンドでは、ドライブをまたいだカレントディレクトリの変更はできない。カレントディレクトリをCドライブのディレクトリからDドライブのディレクトリに変更する場合は、まずD:のようにコマンドなしでドライブ名と区切り文字コロンのみを入力し、カレントドライブを変更する必要がある。これによってカレントディレクトリはドライブのルートに変更されるので、あとはcdコマンドで所望のディレクトリに変更する。あるいは、のようにcdコマンドに/dオプションを付けることでドライブをまたいだ変更ができるWindowsコマンド集：（cd）cd | Microsoft Learn。

 Windows PowerShell/PowerShell現在の場所の管理 - PowerShell | Microsoft Learn
 カレントディレクトリの変更
 あるいは
 カレントディレクトリのフルパス表示
 あるいは

cmd.exeのように、カレントディレクトリの変更にはcdやchdirを使うこともできるが、引数を指定しなかった場合はエコーを返さない。代わりにpwdがGet-Locationコマンドレットのエイリアスとして用意されている。

 脚注 

 出典 

関連項目
ファイルシステム
ディレクトリ
ルートディレクトリ
ホームディレクトリ
環境変数

Category:OSのファイルシステム
カテゴリ:作業