作業ディレクトリ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

コンピューティングでは、プロセスの作業ディレクトリは階層ファイルシステムディレクトリであり、存在する場合は、各プロセスに動的に関連付けられます[nb1] 。BSD [1]関数、または単に現在のディレクトリなど、現在の作業ディレクトリ(CWD)と呼ばれることもあります。[2]プロセスが単純なファイル名または相対パスを使用してファイルを参照する場合(ルートディレクトリからのフルパスで指定されたファイルとは対照的) getcwd)、参照はプロセスの作業ディレクトリに関連して解釈されます。したがって、たとえば、/rabbit-shoesファイルの作成を要求する作業ディレクトリを持つプロセスは、ファイルfoo.txtを作成することになります/rabbit-shoes/foo.txt

オペレーティングシステムで

ほとんどのコンピュータファイルシステムでは、すべてのディレクトリ.に、ディレクトリ自体を指すエントリ(通常は ""という名前)があります。

ほとんどのDOSおよびUNIX コマンドシェル、およびMicrosoftWindowsコマンドラインインタープリターcmd.exeおよびWindowsPowerShellではCD、またはCHDIR コマンドを使用して作業ディレクトリを変更できますUnixシェルでは、コマンドpwd作業ディレクトリのフルパス名を出力します。DOSおよびWindowsでの同等のコマンドは、引数付きCDまたは引数CHDIRなしです(一方、Unixでは、引数なしで使用すると、ユーザーはホームディレクトリに戻ります)。 cd

環境変数 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を呼び出す
DEL SETCD.BAT

または、マルチユーザーDOSおよびDR-DOS 7.02以降では、さまざまな内部および外部コマンドがパラメーター/B(「バッチ」用)をサポートします。[5]これにより、コマンドの出力が変更され、コマンドラインからの直接入力(バッチファイルにリダイレクトする場合)または他のコマンドのパラメーターとしての使用(別のコマンドの入力として使用)に適したものになります。CHDIRのようなディレクトリパスを発行する場所では、代わりにC:\DOSのようなコマンドCHDIR /Bが発行されるため、後でこのディレクトリに戻ることができる一時的なバッチジョブが作成されます。 CHDIR C:\DOSCHDIR /B > RETDIR.BAT

作業ディレクトリは、コマンド[6]の$P[nb 2]トークンによっても表示されます。深いサブディレクトリ構造内でもプロンプトを短くするために、DR-DOS 7.07COMMAND.COMは[nb2]トークンをサポートし、最も深いサブディレクトリレベル。したがって、デフォルトでfeがまたは、になる場合、代わりにaはそれぞれおよびを生成します。同様の機能(およびを使用)も4DOSに追加されました。[3]PROMPT$WPROMPT $P$GC:\DOS>C:\DOS\DRDOS>PROMPT $N:$W$GC:DOS>C:DRDOS>$W$w

DOSでは、すべての論理ボリュームの作業ディレクトリの絶対パスは、Current Directory Structure(CDS)と呼ばれる配列のようなデータ構造に内部的に格納されます。これは、起動時に動的に割り当てられ、すべての論理ボリュームに必要な数のスロットを保持します。ドライブ(またはLASTDRIVEで定義されているとおり)。[7] [8] [9]この構造は、各作業ディレクトリのフルパスに66文字の長さ制限を課し、したがって、サブディレクトリの可能な最大の深さも暗黙的に制限します。[7] DOSPlusおよびDRDOSの以前の問題( 1991年にBDOS6.7を使用したDRDOS 6.0まで)には、そのような制限はありませんでした[8] [10][3]コンカレントDOS(したがってCP / M-86)から派生したカーネル上でDOSエミュレーションを使用して実装されているため、サブディレクトリは絶対パスではなく親ディレクトリへの相対リンクとして内部的に編成されています。[8] [10] PalmDOS (BDOS 7.0を使用)およびDR DOS 6.0(BDOS 7.1を使用した1992年の更新)以降は、DOSプログラムとの互換性を最大化するためにCDSを使用するように切り替えられたため、他のDOSと同じ制限に直面しました。 。[8] [10]

プログラミング言語で

ほとんどのプログラミング言語は、プログラムの作業ディレクトリを設定(変更)する機能など、オペレーティングシステム のファイルシステム機能へのインターフェイスを提供します。

C言語では、POSIX関数、作業ディレクトリを変更するシステムコールchdir()に影響を与えます。[11]その引数は、絶対または古いディレクトリからの相対的な新しいディレクトリへのパスを含むテキスト文字列です。利用可能な場合は、プロセスから呼び出して作業ディレクトリを設定できます。

他の言語にも同じ機能があります。Visual Basicでは、通常はスペルト小麦CHDIR()です。

WindowsAPIまたはPOSIXC 関数とは異なり、Javaプログラミング言語もJava仮想マシンも直接サポートしていません。[説明が必要] Javaを担当するチームが代替案を検討している間、変更要求は10年以上開いたままでしたが、2008年までに、限られたサポートのみが導入された後、要求は拒否されました(最初とそれ以降に影響します)。[12]chdir()java.lang.Runtimejava.lang.ProcessBuilder

も参照してください

メモ

  1. ^ 階層ファイルシステムをサポートしているが、「作業ディレクトリ」の概念がないオペレーティングシステムがありたとえば、 TI-990シリーズに使用されるTexasInstrumentsDX10 。
  2. ^ a b DR-DOS COMMAND.COM下での代替として機能するのと同じように、非のパスを取得しようとするときの重大なエラーメッセージまたは遅延を回避するためにフロッピーで抑制されることを除いてエイリアスがあります。フロッピーを挿入しました。$O$P $W$Y

参照

  1. ^ getcwd(3)
  2. ^ 「MicrosoftWindows–SetCurrentDirectory関数」Microsoft2018-05-27にオリジナルからアーカイブされました2017年5月27日取得
  3. ^ a b c d ブラザーズ、ハーディン; ローソン、トム; Conn、Rex C .; ポール、マティアスR .; 染料、チャールズE .; Georgiev、Luchezar I.(2002-02-27)。4DOS8.00オンラインヘルプ
  4. ^ DR-DOS 7.03 WHATSNEW.TXT —DR-DOS7.02からDR-DOS7.03への変更Caldera、 Inc.1998-12-24。2019-04-08にオリジナルからアーカイブされました2019年4月8日取得
  5. ^ CCIマルチユーザーDOS7.22GOLDオンラインドキュメントConcurrent Controls、Inc.(CCI)。1997-02-10。HELP.HLP。
  6. ^ CalderaDR-DOS7.02ユーザーガイドCaldera、Inc. 1998 [1993、1997]。2016年11月4日にオリジナルからアーカイブされまし2013年8月10日取得
  7. ^ a b Schulman、Andrew; ブラウン、ラルフD .; マクシー、デビッド; ミシェルズ、レイモンドJ .; カイル、ジム(1994)[1993年11月]。文書化されていないDOS:予約済みのMS-DOS関数とデータ構造に関するプログラマーズガイド-MS-DOS 6、Novell DOS、およびWindows 3.1(2版)を含むように拡張されました。マサチューセッツ州レディング:アディソンウェスリーISBN 0-201-63287-XISBN978-0-201-63287-3_ (xviii + 856 + viページ、3.5インチフロッピー)エラッタ:[1] [2]
  8. ^ a b c d Paul、Matthias R.(1997-07-30)[1994-05-01]。NWDOS-ヒント— Novell DOS 7で実行されるヒントとコツ、Blick auf undokumentierteの詳細、バグと回避策MPDOSTIPリリース157(ドイツ語)(3版)。2017-09-10にオリジナルからアーカイブされました2014年8月6日取得(注:NWDOSTIP.TXTは、Novell DOS7およびOpenDOS7.01に関する包括的な作業であり、文書化されていない多くの機能と内部の説明が含まれています。これは、MPDOSTIP.ZIP2001年まで維持され、当時多くのサイトで配布された、作成者のさらに大きなコレクションの一部です。提供されているリンクは、HTMLに変換された古いバージョンのファイルを指していNWDOSTIP.TXTます。)[3]
  9. ^ ブラウン、ラルフD .; et al。、eds。(2000-07-16)。「ラルフブラウンの割り込みリスト」(61版)。INTER61
  10. ^ a b c Paul、Matthias R.(1997-06-07)[1994年4月]。「第1.3.xi章:ÜberlangePfade」。NWDOS7UN.TXT — Zusammenfassung derdokumentiertenundundokumentiertenFähigkeitenvonNovellDOS7MPDOSTIPリリース85(ドイツ語)。2016年11月7日にオリジナルからアーカイブされました2016年11月7日取得
  11. ^ 「TheOpenGroupBase Specification Issue 6 and IEEE Std 1003.1」(Issue 6、2004 ed。)IEEETheOpenGroup_ 2004年[2001]。2018-02-09にオリジナルからアーカイブされました2018年5月27日取得
  12. ^ 「JDK-4045688:作業ディレクトリを変更するchdirまたは同等の概念を追加してください」バグデータベースOracleSun Microsystems)。2008-08-18[1997-04-17]。2017-10-19にオリジナルからアーカイブされました2011年2月20日取得

さらに読む

外部リンク