ファイルシステム操作のデフォルトディレクトリ
コンピューターにおいて、 作業ディレクトリとは 相対パス [a] が相対する ファイルシステム の ディレクトリ のことです 。
コマンドライン 環境では 、 ユーザーは 作業ディレクトリ内または作業ディレクトリを基準とした相対パスでファイルを使用することがよくあります。作業ディレクトリを識別するシステム 状態 は、作業のコンテキストを定義する便利な方法を提供します。ユーザーは、常に 絶対 パスを使用する代わりに、概念的に単純で通常は短いパスを使用できます。例えば、 Unix系 /home/user/data システムの作業ディレクトリの場合 、 ファイル名 (相対パス)は絶対パスを参照します 。作業ディレクトリのシステム状態は、多くの場合 グラフィカルユーザーインターフェース (GUI)にも適用されますが、GUI環境ではディレクトリコンテキストが異なる方法で管理されるため、役に立たないことがよくあります。
foo.txt /home/user/data/foo.txt
作業ディレクトリは環境によって異なる機能ですが、共通した典型的な属性もいくつかあります。通常、各 プロセスは 個別の作業ディレクトリを持ち、ユーザーは コンピュータ 上で実行されている シェルごとに異なる作業ディレクトリを持つことができます。 階層型ファイルシステム を提供するシステムでは一般的ですが 、作業ディレクトリ機能は必須ではありません。例えば、 DX10オペレーティングシステムで は、すべてのパス名が絶対パスまたはシステムボリュームに対する相対パスであるため、この機能は提供されていません。 [1]
別名としては、 現在の作業ディレクトリ(CWD) [b] や単に 現在のディレクトリ [3] などがある。
使用
ディレクトリを変更する
多くの シェルは、作業ディレクトリを設定するための cd コマンド を提供しています 。システムによっては、異なる名前のコマンドが提供されている場合もあります。例えば、 DOS/Windowsでは chdirは の別名です。 cd
報告
作業ディレクトリを表示するコマンドは、設定するコマンドよりも多様です。通常、 Unixシェルは 作業ディレクトリへの絶対パスを表示するコマンド( print working directory pwd の略 )を提供しています。DOS/Windowsで同等のコマンドは without arguments です。Unix系システムでwithout argumentを使用すると、通常、作業ディレクトリはユーザーの ホームディレクトリ に設定されます 。 cdcd
スクリプト
スクリプト開発を容易にするため、一部のシェルでは 作業ディレクトリのパスを格納する 変数 を提供しています。通常、Unix系シェルはという 環境変数 PWD を提供しています。Windowsシェルの COMMAND.COM と cmd.exeは という 擬似環境変数 を提供しています CD 。4DOS 、 4OS2、4NTシェル は 、 、 、 を 提供しています [4] 。 _CWD _CWDS _CWP _CWPS
Windowsのショートカット
Windows の ファイル ショートカットに 作業ディレクトリを保存できます。 [ 説明が必要 ]
コマンドラインプロンプト
作業ディレクトリは、 DOS コマンド の $P [nb 1] トークンによって表示されます。 [5] 深いディレクトリでプロンプトを短くするため、DR-DOS 7.07 COMMAND.COMは [nb 1] トークンをサポートしており、最深のサブディレクトリレベルのみを表示します。そのため、デフォルトでは fe または aがそれぞれ fe またはaになります 。同様の機能( およびを使用 )が 4DOS にも追加されました。 [4] prompt$W PROMPT $P$G C:\DOS>C:\DOS\DRDOS>PROMPT $N:$W$G C:DOS>C:DRDOS>$W $w
各DOSドライブの状態
DOSでは、各論理ボリュームの作業ディレクトリへの絶対パスは、現在のディレクトリ構造(CDS)として保存されます。これは、起動時に各論理ドライブ(または LASTDRIVE で定義されたもの)のスロットに割り当てられます。 [6] [7] [8] この構造により、各作業ディレクトリのフルパスの長さは66文字に制限され、暗黙的にサブディレクトリの最大深度も制限されます。 [6]
DOS Plus およびDR DOSの旧バージョン( 1991年の BDOS 6.7搭載の DR DOS 6.0 まで)にはそのような制限はなかった [7] [9] [4]。これは、 コンカレントDOS ( CP/M-86も )由来のカーネル 上で DOSエミュレーションを 使用して実装されていたためであり、内部的にはサブディレクトリを 絶対 パスではなく親ディレクトリへの 相対 リンクとして構成していた。 [7] [9] PalmDOS (BDOS 7.0搭載)およびDR DOS 6.0(1992年のBDOS 7.1搭載アップデート)以降は、DOSプログラムとの 互換性を最大限に するためにCDSを使用するように切り替えたため 、他のDOSと同じ制限に直面した。 [7] [9]
高水準言語アクセス
ほとんどの プログラミング言語 環境では 、作業ディレクトリを取得および設定するための ファイル システム への アプリケーション プログラミング インターフェイスが提供されます。
POSIX で定義された関数 ( chdir()C言語やC言語と相互運用できる多くの言語からアクセス可能 ) は、 作業ディレクトリを変更する システムコールです。 [10] 引数は 、ターゲットディレクトリへの絶対パスまたは既存の値に対する相対パスを表す テキスト文字列です。
Visual Basic では、 同じ名前の関数を通じて同じ機能を提供します。
Java では、作業ディレクトリは java.nio.file.Pathインターフェースまたはクラス を介して取得できます java.io.File。作業ディレクトリを変更することはできません。 [11]
例
DR-DOS 7.02 以降 のCOMMAND.COMは、 終了改行を省略したコマンド ECHOSの変種であるを提供しています。 [12] [4] これを使うと、作業ディレクトリを環境変数に保存し、後で使用できるように一時的なバッチジョブを作成できます 。例えば、
ECHO CD
ECHOS SET CD=> SETCD.BAT
CHDIR >> SETCD.BAT
SETCD.BATを呼び出す
SETCD.BAT を削除します
あるいは、 マルチユーザーDOS および DR-DOS 7.02 以降では、様々な内部コマンドおよび外部コマンドがパラメータ /B (「バッチ」用)をサポートしています。 [13] これにより、コマンドの出力が、直接コマンドライン入力( バッチファイル にリダイレクトする場合)や他のコマンドのパラメータとして使用(別のコマンドの入力として使用)に適したものになります。 CHDIR が のようなディレクトリパスを発行するのに対し C:\DOS、 のようなコマンドは CHDIR /B を発行する CHDIR C:\DOSため、 CHDIR /B > RETDIR.BAT 一時的なバッチジョブが作成され、後でこのディレクトリに戻ることができます。
参照
chroot – 見かけ上のルートディレクトリを変更するシェルコマンドとシステムコール
ホームディレクトリ – 特定のユーザーのファイルを保持するディレクトリ
ドライブのロード – コンピュータ上の論理ドライブへのアルファベット順の割り当て(例:C:\) リダイレクト先の簡単な説明を表示するページ
長いファイル名 – 8.3 ファイル名命名規則の拡張
ルートディレクトリ – 階層内の最初または最上位のディレクトリ
注記
^ スラッシュ (/) で始まらない Unix パスや、バックスラッシュ (\) で始まらない Windows パスなど
^ コマンド getcwd[2] で使用されている。
参考文献
^ DX10オペレーティングシステム操作ガイド (PDF) . Texas Instruments . 1982-09-01. 7.4 パス名の使用.
^ getcwd(3)
^ “Microsoft Windows – SetCurrentDirectory 関数”. Microsoft . 2018年5月27日時点のオリジナルよりアーカイブ 。 2017年5月27日 閲覧。
^ abcd Brothers, Hardin; Rawson, Tom ; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 オンラインヘルプ .
^ Caldera DR-DOS 7.02 ユーザーガイド. Caldera, Inc. 1998 [1993, 1997]. 2016年11月4日時点のオリジナルよりアーカイブ。 2013年8月10日 閲覧 。
^ ab シュルマン, アンドリュー; ブラウン, ラルフ D. ; マクシー, デイビッド; ミシェルズ, レイモンド J.; カイル, ジム (1994) [1993年11月]. 『Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - extending to include MS-DOS 6, Novell DOS and Windows 3.1 (第2版). Reading, Massachusetts: Addison Wesley . ISBN 0-201-63287-X . ISBN 978-0-201-63287-3 。 (xviii+856+viページ、3.5インチフロッピー) 正誤表: [1][2]
^ abcd ポール、マティアス R. (1997-07-30) [1994-05-01]. NWDOS-TIP — Novell DOS 7 に関するヒントとコツ、詳細、バグ、回避策を含む Blick です。 MPDOSTIP (ドイツ語) (第 3 版)。 2017-09-10 のオリジナルからアーカイブ 。 2014 年 8 月 6 日 に取得 。 (注:NWDOSTIP.TXTはNovell DOS 7とOpenDOS 7.01に関する包括的な資料であり、多くの未文書化の機能や内部構造の説明も含まれています。これは著者が MPDOSTIP.ZIP2001年まで維持し、当時多くのサイトで配布していた大規模なコレクションの一部です。提供されているリンクは、HTMLに変換された古いバージョンのファイルを指しています NWDOSTIP.TXT。)[3]
^ Brown, Ralf D. 他編 (2000-07-16). 「Ralf Brownの割り込みリスト」(第61版). INTER61 .
^ abc ポール、マティアス R. (1997-06-07) [1994 年 4 月]。 「第 1.3.xi 章: ユーバーランゲ プファーデ」。 NWDOS7UN.TXT — Novell DOS 7 の機能を強化します。MPDOSTIP (ドイツ語)。 2016-11-07 のオリジナルからアーカイブ 。 2016 年 11 月 7 日 に取得 。
^ 「The Open Group Base Specifications Issue 6およびIEEE Std 1003.1」(Issue 6、2004年版)。The IEEE および The Open Group 。2004年[2001]。2018年2月9日時点のオリジナルよりアーカイブ。 2018年5月27日 閲覧 。
^ 「JDK-4045688: chdir または同等の作業ディレクトリ変更機能を追加」。 バグデータベース 。Oracle ( Sun Microsystems )。2008年8月18日 [1997年4月17日]。2017年10月19日時点の オリジナル よりアーカイブ。 2011年2月20日 閲覧 。
^ DR-DOS 7.03 WHATSNEW.TXT — DR-DOS 7.02 から DR-DOS 7.03 への変更点。 カルデラ社、 1998-12-24。 2019年4月8日のオリジナルからアーカイブ 。 2019年4月8日 に取得 。
^ CCI Multiuser DOS 7.22 GOLD オンラインドキュメント . Concurrent Controls, Inc. (CCI). 1997-02-10. HELP.HLP.
さらに読む
Chen, Raymond (2010-10-11). 「なぜ各ドライブにカレントディレクトリがあるのか?」 The New Old Thing . Microsoft . 2016年4月12日時点のオリジナルよりアーカイブ。 2017年5月27日 閲覧 。
Chen, Raymond (2010-05-06). 「これらの奇妙な=C:環境変数とは何ですか?」 The New Old Thing . Microsoft . 2018-05-27 にオリジナルからアーカイブ 。2017-05-27に閲覧 。
外部リンク