Pracovní adresář - Working directory

V práci na počítači je pracovní adresář z procesu je adresář z hierarchického systému souborů , pokud existuje, dynamicky spojený s každým procesem. Někdy se mu říká aktuální pracovní adresář (CWD) , např. Funkce BSD getcwd(3) , nebo jen aktuální adresář . Když proces odkazuje na soubor pomocí jednoduchého názvu souboru nebo relativní cesty (na rozdíl od souboru určeného úplnou cestou z kořenového adresáře ), je odkaz interpretován relativně k pracovnímu adresáři procesu. Například proces s pracovním adresářem, /rabbit-shoeskterý požádá o vytvoření souboru foo.txt, skončí vytvořením souboru /rabbit-shoes/foo.txt.

V operačních systémech

Ve většině počítačových souborových systémů má každý adresář položku (obvykle s názvem „ .“), která ukazuje na samotný adresář.

Ve většině příkazových prostředí DOS a UNIX a také v interpretech příkazového řádku systému Microsoft Windows cmd.exe a Windows PowerShell lze pracovní adresář změnit pomocí příkazů nebo . V unixových skořápek se příkaz výstup celou cestu z pracovního adresáře; ekvivalentní příkaz v systému DOS a Windows je nebo bez argumentů (zatímco v Unixu se bez argumentů uživatel vrátí zpět do svého domovského adresáře ). CDCHDIR pwdCDCHDIRcd

Proměnnou prostředí PWD (v Unix / Linux mušlí), nebo proměnné pseudo-prostředí CD (v systému Windows COMMAND.COM a cmd.exe , ale ne v OS / 2 a DOS), nebo _CWD, _CWDS, _CWPa _CWPS(pod 4DOS , 4OS2 , 4NT etc .) lze použít ve skriptech, takže člověk nemusí spouštět externí program. Zkratky souborů systému Microsoft Windows mají schopnost ukládat pracovní adresář.

COMMAND.COM v DR-DOS 7.02 a vyšší poskytuje ECHOSvariantu ECHOpříkazu, která vynechává ukončující linefeed. To lze použít k vytvoření dočasné dávkové práce, která ukládá pracovní adresář do proměnné prostředí, jako CDpro pozdější použití, například:

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

Alternativně pod Multiuser DOS a DR-DOS 7.02 a novějšími různé interní a externí příkazy podporují parametr /B(pro „Batch“). Tím se upraví výstup příkazů, aby se stal vhodným pro přímý vstup příkazového řádku (při jeho přesměrování do dávkového souboru) nebo použití jako parametr pro jiné příkazy (použití jako vstup pro jiný příkaz). Kde CHDIRby se vydávala cesta k adresáři jako C:\DOS, místo toho CHDIR /Bby se vydal příkaz jako CHDIR C:\DOS, takže CHDIR /B > RETDIR.BATby se vytvořila dočasná dávková práce umožňující pozdější návrat do tohoto adresáře.

Pracovní adresář je také zobrazen $Ptokenem PROMPTpříkazu Aby byla výzva krátká i uvnitř hlubokých podadresářových struktur, DR-DOS 7.07 COMMAND.COM podporuje $Wtoken pro zobrazení pouze nejhlubší úrovně podadresářů. Kde PROMPT $P$Gby tedy výchozí nastavení mělo za následek fe in C:\DOS>nebo C:\DOS\DRDOS>, a PROMPT $N:$W$Gby místo toho poskytlo C:DOS>a C:DRDOS>, resp. Podobné zařízení (pomocí $Wa $w) bylo také přidáno do 4DOS .

V systému DOS jsou absolutní cesty pracovních adresářů všech svazků interně uloženy v datové struktuře podobné poli s názvem Current Directory Structure ( CDS ), která se při zavádění dynamicky alokuje, aby pojala potřebný počet slotů pro všechny jednotky ( nebo podle definice LASTDRIVE . Tato struktura ukládá omezení délky 66 znaků na úplnou cestu každého pracovního adresáře, a tím implicitně také omezuje maximální možnou hloubku podadresářů. DOS Plus a starší problémy DR DOS (až DR DOS 6.0 v roce 1991) nemělo takové omezení kvůli jejich implementaci pomocí emulace DOS nad jádrem odvozeným od souběžného DOS -(a tedy CP/M -86 -), které interně organizovalo podadresáře jako relativní odkazy na nadřazené adresáře namísto jako absolutní Vzhledem k tomu, že PalmDOS a DR DOS 6.0 (od roku 1992) a vyšší přešli na používání CDS pro maximální kompatibilitu i s programy DOS, potýkali se se stejnými omezeními, jaké jsou přítomny v jiných DOSech.

V programovacích jazycích

Většina programovacích jazyků poskytuje rozhraní k funkcím systému souborů operačního systému, včetně možnosti nastavit (změnit) pracovní adresář programu.

V jazyce C , je POSIX funkce chdir()má vliv na systémové volání , které změní pracovní adresář. Jeho argumentem je textový řetězec s cestou do nového adresáře, buď absolutní, nebo relativní ke starému. Pokud je k dispozici, lze jej vyvolat procesem a nastavit jeho pracovní adresář.

Stejná funkce je v jiných jazycích. V jazyce Visual Basic se obvykle píše CHDIR().

Na rozdíl od Windows API nebo POSIX C funkce, ani v Java programovací jazyk, ani Java Virtual Machine podpěr chdir()přímo; žádost o změnu zůstala otevřená více než deset let, zatímco tým odpovědný za Javu zvažoval alternativy, ačkoli do roku 2008 byla žádost zamítnuta poté, co byla zavedena pouze omezená podpora (ovlivňující první java.lang.Runtimea pozdější java.lang.ProcessBuilder ).

Viz také

Poznámky

Reference

Další čtení

externí odkazy