Directeur de travail - Working directory

En informatique , le répertoire de travail d'un processus est un répertoire d'un système de fichiers hiérarchique , le cas échéant, associé dynamiquement à chaque processus. Il est parfois appelé le répertoire de travail courant (CWD) , par exemple la fonction BSD getcwd(3) , ou simplement le répertoire courant . Lorsque le processus fait référence à un fichier utilisant un nom de fichier simple ou un chemin relatif (par opposition à un fichier désigné par un chemin complet à partir d'un répertoire racine ), la référence est interprétée par rapport au répertoire de travail du processus. Ainsi, par exemple, un processus avec un répertoire de travail /rabbit-shoesqui demande de créer le fichier foo.txtfinira par créer le fichier /rabbit-shoes/foo.txt.

Dans les systèmes d'exploitation

Dans la plupart des systèmes de fichiers informatiques, chaque répertoire a une entrée (généralement nommée " .") qui pointe vers le répertoire lui-même.

Dans la plupart des interpréteurs de commandes DOS et UNIX , ainsi que dans les interpréteurs de ligne de commande Microsoft Windows cmd.exe et Windows PowerShell , le répertoire de travail peut être modifié à l'aide des commandes ou . Dans les shells Unix , la commande affiche un chemin d'accès complet du répertoire de travail ; la commande équivalente sous DOS et Windows est ou sans arguments (alors que sous Unix, utilisée sans arguments renvoie l'utilisateur à son répertoire personnel ). CDCHDIR pwdCDCHDIRcd

La variable d'environnement PWD (dans les shells Unix/Linux), ou les variables de pseudo-environnement CD (dans Windows COMMAND.COM et cmd.exe , mais pas dans OS/2 et DOS), ou _CWD, _CWDS, _CWPet _CWPS(sous 4DOS , 4OS2 , 4NT etc .) peut être utilisé dans des scripts, de sorte qu'il n'est pas nécessaire de démarrer un programme externe. Les raccourcis de fichiers Microsoft Windows ont la possibilité de stocker le répertoire de travail.

COMMAND.COM dans DR-DOS 7.02 et versions ultérieures fournit ECHOS, une variante de la ECHOcommande omettant le saut de ligne de fin. Cela peut être utilisé pour créer un batchjob temporaire stockant le répertoire de travail dans une variable d'environnement comme CDpour une utilisation ultérieure, par exemple :

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

Alternativement, sous Multiuser DOS et DR-DOS 7.02 et versions ultérieures, diverses commandes internes et externes prennent en charge un paramètre /B(pour « Batch »). Cela modifie la sortie des commandes pour qu'elle soit adaptée à l'entrée directe de la ligne de commande (lors de la redirection dans un fichier batch) ou à l'utilisation en tant que paramètre pour d'autres commandes (en l'utilisant comme entrée pour une autre commande). Où CHDIRémettre un chemin de répertoire comme C:\DOS, une commande comme CHDIR /Bserait émise à la CHDIR C:\DOSplace, ce qui CHDIR /B > RETDIR.BATcréerait un travail par lots temporaire permettant de revenir ultérieurement à ce répertoire.

Le répertoire de travail est également affiché par le $Pjeton de la PROMPTcommande Pour garder l'invite courte même à l'intérieur des structures de sous-répertoires profondes, DR-DOS 7.07 COMMAND.COM prend en charge un $Wjeton pour afficher uniquement le niveau de sous-répertoire le plus profond. Ainsi, là où une valeur par défaut PROMPT $P$Gentraînerait fe dans C:\DOS>ou C:\DOS\DRDOS>, a PROMPT $N:$W$Gproduirait à la place C:DOS>et C:DRDOS>, respectivement. Une fonctionnalité similaire (utilisant $Wet $w) a également été ajoutée à 4DOS .

Sous DOS, les chemins absolus des répertoires de travail de tous les volumes sont stockés en interne dans une structure de données de type tableau appelée Current Directory Structure ( CDS ), qui est allouée dynamiquement au démarrage pour contenir le nombre nécessaire d'emplacements pour tous les lecteurs ( ou tel que défini par LASTDRIVE . Cette structure impose une longueur limite de 66 caractères sur le chemin complet de chaque répertoire de travail, et donc implicitement limite également la profondeur maximale possible des sous-répertoires. DOS Plus et les anciennes versions de DR DOS (jusqu'à DR DOS 6.0 en 1991) n'avaient pas une telle limitation en raison de leur implémentation utilisant une émulation DOS au-dessus d'un noyau dérivé de DOS simultané - (et donc CP/M-86 -), qui organisait en interne les sous-répertoires en tant que liens relatifs vers les répertoires parents au lieu d'être absolus. Depuis que PalmDOS et DR DOS 6.0 (depuis 1992) et les versions ultérieures sont passés à utiliser un CDS pour une compatibilité maximale avec les programmes DOS, ils ont été confrontés aux mêmes limitations que celles présentes dans les autres DOS.

Dans les langages de programmation

La plupart des langages de programmation fournissent une interface aux fonctions du système de fichiers du système d'exploitation, y compris la possibilité de définir (modifier) ​​le répertoire de travail du programme.

En langage C , la fonction POSIXchdir() effectue l' appel système qui change le répertoire de travail. Son argument est une chaîne de texte avec un chemin vers le nouveau répertoire, absolu ou relatif à l'ancien. Lorsqu'il est disponible, il peut être appelé par un processus pour définir son répertoire de travail.

Il y a la même fonction dans d'autres langues. En Visual Basic, il est généralement orthographié CHDIR().

Contrairement à l' API Windows ou à la fonction POSIX C , ni le langage de programmation Java ni la machine virtuelle Java ne prennent chdir()en charge directement ; une demande de modification est restée ouverte pendant plus d'une décennie tandis que l'équipe responsable de Java a examiné les alternatives, bien qu'en 2008, la demande ait été refusée après l'introduction d'un support limité (affectant d'abord java.lang.Runtimeet plus tard, java.lang.ProcessBuilder ).

Voir également

Remarques

Les références

Lectures complémentaires

Liens externes