コンピューティング において、プロセスの作業ディレクトリとは、階層型ファイルシステムのディレクトリ(存在する場合)であり、[nb 1]プロセスに動的に関連付けられます。これは、BSD [1]機能などの現在の作業ディレクトリ (CWD) 、または単に現在のディレクトリ[2]と呼ばれることもあります。プロセスが単純なファイル名または相対パスを使用してファイルを参照する場合 (ルートディレクトリからのフルパスで指定されたファイルとは対照的)、参照はプロセスの作業ディレクトリを基準として解釈されます。そのため、たとえば、作業ディレクトリを持つプロセスがファイルの作成を要求すると、最終的にファイルが作成されます。 getcwd/rabbit-shoesfoo.txt/rabbit-shoes/foo.txt
オペレーティングシステム
.ほとんどのコンピュータ ファイル システムでは、すべてのディレクトリに、ディレクトリ自体を指す エントリ (通常は「 」という名前) があります。
ほとんどのDOSおよびUNIX コマンド シェル、およびMicrosoft Windowsコマンド ライン インタープリタのcmd.exeとWindows PowerShellでは、CDまたはCHDIR コマンドを使用して作業ディレクトリを変更できます。Unixシェルでは、pwdコマンドは作業ディレクトリの完全なパス名を出力します。DOS および Windows で同等のコマンドは、引数なしのCDまたはです(一方、Unix では、を引数なしで使用すると、ユーザーはホーム ディレクトリに戻ります)。 CHDIRcd
環境変数 PWD(Unix/Linuxシェルの場合)、疑似環境変数 CD(Windows COMMAND.COMおよびcmd.exeの場合、OS / 2およびDOSでは不可)、または_CWD、、および(4DOS、4OS2、4NTなどの場合)[3]をスクリプト内で使用できるため、外部プログラムを起動する必要がありません。Microsoft Windowsのファイルショートカット_CWDSには、作業ディレクトリを保存できる機能があります。 _CWP_CWPS
DR-DOS 7.02以降のCOMMAND.COMは、終了改行を省略したコマンドECHOSの変形であるを提供します。 [4] [3]これを使用して、作業ディレクトリを後で使用するために環境変数に格納する一時的なバッチジョブを作成できます。たとえば、次のようになります。 ECHOCD
ECHOS SET CD=> SETCD.BAT CHDIR >> SETCD.BAT SETCD.BATを呼び出す SETCD.BAT を削除します
あるいは、マルチユーザー DOSおよびDR-DOS 7.02以降では、さまざまな内部コマンドと外部コマンドがパラメータ/B(「バッチ」用) をサポートしています。[5]これにより、コマンドの出力が、直接のコマンド ライン入力 (バッチ ファイルにリダイレクトする場合) や他のコマンドのパラメータとして使用 (別のコマンドの入力として使用) するのに適したものになります。 がCHDIRのようなディレクトリ パスを発行する場合C:\DOS、 のようなコマンドは代わりにCHDIR /Bを発行しますCHDIR C:\DOS。これによりCHDIR /B > RETDIR.BAT、後でこのディレクトリに戻ることができる一時的なバッチジョブが作成されます。
作業ディレクトリは、コマンドの$P[nb 2]トークンでも表示されます[6]深いサブディレクトリ構造内でもプロンプトを短く保つために、DR-DOS 7.07 COMMAND.COM は、最も深いサブディレクトリ レベルのみを表示する[nb 2]トークンをサポートしています。したがって、デフォルトではfeまたはになるところ、 a はそれぞれ feと になります。同様の機能 (および を使用) が4DOSにも追加されました[3]PROMPT$WPROMPT $P$GC:\DOS>C:\DOS\DRDOS>PROMPT $N:$W$GC:DOS>C:DRDOS>$W$w
DOS では、すべての論理ボリュームの作業ディレクトリの絶対パスは、現在のディレクトリ構造 (CDS) と呼ばれる配列のようなデータ構造に内部的に格納され、ブート時にすべての論理ドライブ (またはLASTDRIVEで定義された数) に必要な数のスロットを保持するために動的に割り当てられます。[7] [8] [9]この構造は、各作業ディレクトリの完全なパスに 66 文字の長さ制限を課し、したがって暗黙的にサブディレクトリの最大可能な深さも制限します。[7] DOS Plusおよび DR DOS の以前のバージョン (1991 年のBDOS 6.7を含むDR DOS 6.0まで) には、そのような制限はありませんでした[8] [10] [3]これは、 Concurrent DOS (したがってCP/M-86 ) 由来のカーネル上でDOS エミュレーションを使用して実装されていたためです。このカーネルは、サブディレクトリを絶対パスではなく親ディレクトリへの相対リンクとして内部的に編成していました。[8] [10] PalmDOS (BDOS 7.0搭載)とDR DOS 6.0(1992年更新でBDOS 7.1搭載)以降では、DOSプログラムとの互換性を最大限に高めるためにCDSを使用するようになったため、他のDOSと同じ制限に直面しました。[8] [10]
プログラミング言語では
ほとんどのプログラミング言語は、プログラムの作業ディレクトリを設定 (変更) する機能を含む、オペレーティング システムの ファイル システム機能へのインターフェイスを提供します。
C言語では、POSIX関数は作業ディレクトリを変更するシステムコールchdir()を実行します。[11]その引数は、新しいディレクトリへのパス(絶対パスまたは古いディレクトリからの相対パス)を含むテキスト文字列です。利用可能な場合、プロセスによって呼び出され、作業ディレクトリを設定できます。
他の言語にも同様の関数があります。たとえば、Visual Basicでは通常 と綴られますCHDIR()。
Javaでは、作業ディレクトリはjava.nio.file.Pathインターフェースまたはクラスを通じて取得できますjava.io.File。作業ディレクトリを変更することはできません。[12]
参照
注記
- ^ 階層型ファイルシステムをサポートしながらも「作業ディレクトリ」という概念を持たないオペレーティングシステムもあります。たとえば、TI-990シリーズで使用されるTexas InstrumentsのDX10 などです。
- ^ ab DR-DOS COMMAND.COMの代替として動作するのと同様に、エイリアスを持ちますが、挿入されていないフロッピーのパスを取得しようとしたときに重大なエラーメッセージや遅延を回避するためにフロッピーでは抑制される点が異なります。$O$P $W$Y
参考文献
- ^
- ^ 「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 オンラインヘルプ。
- ^ DR-DOS 7.03 WHATSNEW.TXT — DR-DOS 7.02 から DR-DOS 7.03 への変更。Caldera , Inc. 1998-12-24。2019-04-08 にオリジナルからアーカイブ。2019-04-08に取得。
- ^ CCI Multiuser DOS 7.22 GOLD オンライン ドキュメント。Concurrent Controls, Inc. (CCI)。1997-02-10。HELP.HLP。
- ^ Caldera DR-DOS 7.02 ユーザーガイド。Caldera , Inc. 1998 [1993, 1997]。2016年11月4日時点のオリジナルよりアーカイブ。2013年8月10日閲覧。
- ^ ab シュルマン、アンドリュー;ブラウン、ラルフ D. ; マクシー、デビッド; ミシェルズ、レイモンド J.; カイル、ジム (1994) [1993 年 11 月]。Undocumented DOS: 予約済みの MS-DOS 関数とデータ構造のプログラマー向けガイド - MS-DOS 6、Novell DOS、Windows 3.1 まで拡張(第 2 版)。マサチューセッツ州レディング: 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. ; et al., eds. (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 ed.)。IEEEおよびThe Open Group。2004 [2001]。2018 年 2 月 9 日時点のオリジナルよりアーカイブ。2018 年 5 月 27 日閲覧。
- ^ 「JDK-4045688: chdir または同等の作業ディレクトリ変更の概念を追加」。バグ データベース。Oracle ( Sun Microsystems ) 。2008-08-18 [1997-04-17]。2017-10-19 にオリジナルからアーカイブ。2011-02-20に取得。
さらに読む
- Chen, Raymond (2010-10-11)。「なぜ各ドライブに現在のディレクトリがあるのですか?」The New Old Thing。Microsoft。2016-04-12にオリジナルからアーカイブ。2017-05-27に取得。
- Chen, Raymond (2010-05-06)。「これらの奇妙な =C: 環境変数とは何ですか?」。The New Old Thing。Microsoft。2018-05-27にオリジナルからアーカイブ。2017-05-27に取得。
外部リンク
- Github の Working Directory (wd) – bashセッションでよく使用されるディレクトリを追跡するソフトウェア パッケージ
