Werkmap - Working directory

Bij informatica is de werkdirectory van een proces een directory van een eventueel hiërarchisch bestandssysteem , dynamisch geassocieerd met elk proces. Het wordt soms de huidige werkmap (CWD) genoemd , bijv. de BSD- getcwd(3) functie, of gewoon de huidige map . Wanneer het proces verwijst naar een bestand met een eenvoudige bestandsnaam of relatief pad (in tegenstelling tot een bestand dat wordt aangeduid met een volledig pad uit een hoofdmap ), wordt de verwijzing geïnterpreteerd ten opzichte van de werkmap van het proces. Dus bijvoorbeeld een proces met een werkmap /rabbit-shoesdie vraagt ​​om het bestand aan te maken, foo.txtzal uiteindelijk het bestand maken /rabbit-shoes/foo.txt.

In besturingssystemen

In de meeste computerbestandssystemen heeft elke map een vermelding (meestal " ." genoemd) die naar de map zelf verwijst.

In de meeste DOS- en UNIX- opdrachtshells , evenals in de Microsoft Windows- opdrachtregelinterpreters cmd.exe en Windows PowerShell , kan de werkdirectory worden gewijzigd met behulp van de opdrachtenCD of . In Unix-shells geeft het commando een volledige padnaam van de werkdirectory af; het equivalente commando in DOS en Windows is of zonder argumenten (terwijl in Unix, gebruikt zonder argumenten de gebruiker terugbrengt naar zijn/haar homedirectory ). CHDIR pwdCDCHDIRcd

De omgevingsvariabele PWD (in Unix/Linux-shells), of de pseudo-omgevingsvariabelen CD (in Windows COMMAND.COM en cmd.exe , maar niet in OS/2 en DOS), of _CWD, _CWDS, _CWPen _CWPS(onder 4DOS , 4OS2 , 4NT enz. .) kan in scripts worden gebruikt, zodat men geen extern programma hoeft te starten. Microsoft Windows- bestandssnelkoppelingen hebben de mogelijkheid om de werkmap op te slaan.

COMMAND.COM in DR-DOS 7.02 en hoger biedt ECHOS, een variant van het ECHOcommando waarbij de afsluitende regelinvoer wordt weggelaten. Dit kan worden gebruikt om een ​​tijdelijke batchjob te maken die de werkdirectory opslaat in een omgevingsvariabele zoals CDvoor later gebruik, bijvoorbeeld:

ECHOS SET CD=> SETCD.BAT
CHDIR >> SETCD.BAT
CALL SETCD.BAT
DEL SETCD.BAT

Als alternatief ondersteunen onder Multiuser DOS en DR-DOS 7.02 en hoger verschillende interne en externe commando's een parameter /B(voor "Batch"). Dit wijzigt de uitvoer van opdrachten zodat deze geschikt wordt voor directe invoer via de opdrachtregel (wanneer deze wordt omgeleid naar een batchbestand) of voor gebruik als parameter voor andere opdrachten (gebruikt als invoer voor een andere opdracht). Waar CHDIRzou een directorypad als C:\DOS, een commando als CHDIR /Bzou uitgeven CHDIR C:\DOS, dus dat CHDIR /B > RETDIR.BATzou een tijdelijke batchjob creëren die het mogelijk maakt om later naar deze directory terug te keren.

De werkdirectory wordt ook weergegeven door het $Ptoken van het PROMPTcommando. Om de prompt zelfs binnen diepe subdirectorystructuren kort te houden, ondersteunt DR-DOS 7.07 COMMAND.COM een $Wtoken om alleen het diepste subdirectoryniveau weer te geven. Dus waar een wanbetaling PROMPT $P$Gzou resulteren in C:\DOS>of C:\DOS\DRDOS>, PROMPT $N:$W$Gzou a in plaats daarvan respectievelijk opleveren C:DOS>en C:DRDOS>. Een vergelijkbare faciliteit (met $Wen $w) werd ook toegevoegd aan 4DOS .

Onder DOS worden de absolute paden van de werkmappen van alle volumes intern opgeslagen in een array-achtige gegevensstructuur, de Current Directory Structure ( CDS ) genaamd , die dynamisch wordt toegewezen tijdens het opstarten om het benodigde aantal slots voor alle schijven te bevatten ( of zoals gedefinieerd door LASTDRIVE .Deze structuur legt een lengtelimiet op van 66 karakters op het volledige pad van elke werkdirectory, en dus impliciet ook de maximaal mogelijke diepte van subdirectories.DOS Plus en oudere uitgaven van DR DOS (tot DR DOS 6.0 in 1991) had geen dergelijke beperking vanwege hun implementatie met behulp van een DOS-emulatie bovenop een Concurrent DOS - (en dus CP/M-86 -) afgeleide kernel, die intern subdirectories organiseerde als relatieve links naar bovenliggende mappen in plaats van als absolute Sinds PalmDOS en DR DOS 6.0 (sinds 1992) en hoger zijn overgestapt op het gebruik van een CDS voor maximale compatibiliteit met DOS-programma's, werden ze geconfronteerd met dezelfde beperkingen als in andere DOS'en.

In programmeertalen

De meeste programmeertalen bieden een interface naar de bestandssysteemfuncties van het besturingssysteem, inclusief de mogelijkheid om de werkdirectory van het programma in te stellen (wijzigen).

In de C-taal beïnvloedt de POSIX- functie chdir()de systeemaanroep die de werkdirectory verandert. Het argument is een tekenreeks met een pad naar de nieuwe map, absoluut of relatief ten opzichte van de oude. Indien beschikbaar, kan het door een proces worden aangeroepen om de werkdirectory in te stellen.

Er is dezelfde functie in andere talen. In Visual Basic wordt het meestal gespeld CHDIR().

In tegenstelling tot de Windows API of POSIX C -functie, noch de Java -programmeertaal, noch de Java Virtual Machine ondersteunt chdir()direct; een wijzigingsverzoek bleef meer dan tien jaar open terwijl het team dat verantwoordelijk was voor Java de alternatieven in overweging nam, hoewel het verzoek in 2008 werd afgewezen nadat slechts beperkte ondersteuning was geïntroduceerd (eerst java.lang.Runtimeen later van invloed , java.lang.ProcessBuilder ).

Zie ook

Opmerkingen:

Referenties

Verder lezen

Externe links