カレントディレクトリ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/27 19:12 UTC 版)
概要
階層構造のファイルシステムにおける個々のディレクトリやファイルは、パス(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) などによって異なる。個別に説明する。
POSIX
- カレントディレクトリの変更
cd
- 引数で相対パスまたは絶対パスを指定することで変更が可能。
- カレントディレクトリのフルパス表示
「cd」は1980年代など[要出典]ではPOSIXで規定されたchdir
のほうが大元で、その略記法が「cd」という位置づけだったが、現在[いつ?]ではもっぱら「cd」が使われる状態になっている。Ubuntuではすでにchdir
は廃止されている。
DOS/Windows
- カレントディレクトリの変更
cd <PathString>
あるいはchdir <PathString>
(引数でパスを与える)
- カレントディレクトリのフルパス表示
cd
あるいはchdir
(引数なし)- もともと入力待ちの状態(コマンドプロンプトの状態)でカレントディレクトリのフルパスが表示される仕様になっているので、通常は引数なしコマンドを使う必要はないが、エコーを返すのでリダイレクトに使うこともできる。
Windowsでは、chdir
はまだ残されているものの、cd
で代替されている[10]。
通常のcd
コマンドでは、ドライブをまたいだディレクトリの移動はできない。カレントドライブをCドライブからDドライブに変更する場合は、まずD:
のようにコマンドなしでドライブ名と区切り文字コロンのみを入力し、ドライブのルートに移動する必要がある。あるいは、cd /d D:\Photos
のようにcd
コマンドに/d
オプションを付けることでドライブをまたいだ移動ができる[11][12]。
- Windows PowerShell/PowerShell[13]
- カレントディレクトリの変更
Set-Location -Path <PathString>
あるいはcd <PathString>
- カレントディレクトリのフルパス表示
Get-Location
あるいはpwd
cmd.exeのように、カレントディレクトリの変更にはcd
やchdir
を使うこともできるが、引数を指定しなかった場合はエコーを返さない。代わりにpwd
がGet-Location
コマンドレットのエイリアスとして用意されている。
この節の加筆が望まれています。 |
- ^ a b カレントディレクトリ(カレントフォルダ / ワーキングディレクトリ)とは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ SetCurrentDirectory function (winbase.h) - Win32 apps | Microsoft Learn
- ^ Home directory - IBM Documentation
- ^ chdir() - C Library Reference | BlackBerry QNX
- ^ Inheritance (Processes and Threads) - Win32 apps | Microsoft Learn
- ^ カレントドライブとは - 意味をわかりやすく - IT用語辞典 e-Words
- ^ WindowsのDLL呼び出し順序に由来するセキュリティ・ホール | 日経クロステック(xTECH)
- ^ Dynamic-Link Library Security - Win32 apps | Microsoft Learn
- ^ Dynamic-link library search order - Win32 apps | Microsoft Learn
- ^ chdir | Microsoft Learn
- ^ Windowsコマンド集:(cd)
- ^ cd | Microsoft Learn
- ^ 現在の場所の管理 - PowerShell | Microsoft Learn
- 1 カレントディレクトリとは
- 2 カレントディレクトリの概要
- 3 脚注
- カレントディレクトリのページへのリンク