En informática , el directorio de trabajo de un proceso es un directorio de un sistema de archivos jerárquico , si lo hay, [nb 1] asociado dinámicamente con el proceso. A veces se lo llama directorio de trabajo actual (CWD) , por ejemplo, la función BSD getcwd[1] , o simplemente directorio actual . [2] Cuando un proceso hace referencia a un archivo utilizando un nombre de archivo simple o una ruta relativa (a diferencia de un archivo designado por una ruta completa desde un directorio raíz ), la referencia se interpreta en relación con el directorio de trabajo del proceso. Entonces, por ejemplo, un proceso con directorio de trabajo /rabbit-shoesque solicita crear el archivo foo.txtterminará creando el archivo /rabbit-shoes/foo.txt.
En la mayoría de los sistemas de archivos de computadora, cada directorio tiene una entrada (generalmente llamada " .") que apunta al directorio mismo.
En la mayoría de los intérpretes de línea de comandos de DOS y UNIX , así como en los intérpretes de línea de comandos de Microsoft Windows cmd.exe y Windows PowerShell , el directorio de trabajo se puede cambiar utilizando los comandos o . En los intérpretes de línea de comandos de Unix , el comando genera una ruta completa del directorio de trabajo; el comando equivalente en DOS y Windows es o sin argumentos (mientras que en Unix, utilizado sin argumentos lleva al usuario de regreso a su directorio de inicio ).CDCHDIR pwdCDCHDIRcd
La variable de entorno PWD (en los shells de Unix/Linux), o las variables de pseudoentorno CD (en Windows COMMAND.COM y cmd.exe , pero no en OS/2 y DOS), o _CWD, _CWDS, _CWPy _CWPS(en 4DOS , 4OS2 , 4NT , etc.) [3] se pueden utilizar en scripts, de modo que no sea necesario iniciar un programa externo. Los accesos directos a archivos de Microsoft Windows tienen la capacidad de almacenar el directorio de trabajo.
COMMAND.COM en DR-DOS 7.02 y versiones superiores proporciona ECHOS, una variante del ECHOcomando que omite el salto de línea de terminación. [4] [3] Esto se puede utilizar para crear un trabajo por lotes temporal que almacene el directorio de trabajo en una variable de entorno como CDpara su uso posterior, por ejemplo:
ESTABLECER ECOS CD=> SETCD.BATCHDIR >> SETCD.BATLlamar a SetCD.batDEL SETCD.BAT
Como alternativa, en DOS multiusuario y DR-DOS 7.02 y versiones superiores, varios comandos internos y externos admiten un parámetro /B(para "Batch"). [5] Esto modifica la salida de los comandos para que sea adecuada para la entrada directa de la línea de comandos (al redirigirla a un archivo por lotes) o para su uso como parámetro para otros comandos (usándola como entrada para otro comando). Donde CHDIRse emitiría una ruta de directorio como C:\DOS
, CHDIR /Bse emitiría CHDIR C:\DOS
en su lugar un comando como , de modo que CHDIR /B > RETDIR.BATse crearía un trabajo por lotes temporal que permitiría volver a este directorio más adelante.
El directorio de trabajo también se muestra mediante el token $P[nb 2] del PROMPT
comando [6] Para mantener el mensaje breve incluso dentro de estructuras de subdirectorios profundos, el DR-DOS 7.07 COMMAND.COM admite un token $W[nb 2] para mostrar solo el nivel de subdirectorio más profundo. Por lo tanto, donde un valor predeterminado PROMPT $P$Gdaría como resultado fe C:\DOS>
o C:\DOS\DRDOS>
, a PROMPT $N:$W$Gdaría como resultado C:DOS>
y , respectivamente. También se agregó C:DRDOS>
una función similar (usando $Wy ) a 4DOS . [3]$w
En DOS, las rutas absolutas de los directorios de trabajo de todos los volúmenes lógicos se almacenan internamente en una estructura de datos similar a una matriz llamada Estructura de directorio actual (CDS), que se asigna dinámicamente en el momento del arranque para contener la cantidad necesaria de ranuras para todas las unidades lógicas (o según lo definido por LASTDRIVE ). [7] [8] [9] Esta estructura impone un límite de longitud de 66 caracteres en la ruta completa de cada directorio de trabajo y, por lo tanto, implícitamente también limita la profundidad máxima posible de los subdirectorios. [7] DOS Plus y ediciones anteriores de DR DOS (hasta DR DOS 6.0 , con BDOS 6.7 en 1991) no tenían tal limitación [8] [10] [3] debido a su implementación utilizando una emulación de DOS sobre un núcleo derivado de Concurrent DOS (y por lo tanto de CP/M-86 ), que organizaba internamente los subdirectorios como enlaces relativos a los directorios principales en lugar de como rutas absolutas . [8] [10] Dado que PalmDOS (con BDOS 7.0) y DR DOS 6.0 (actualización de 1992 con BDOS 7.1) y versiones superiores cambiaron a utilizar un CDS para lograr la máxima compatibilidad con programas DOS también, enfrentaron las mismas limitaciones que están presentes en otros DOS. [8] [10]
La mayoría de los lenguajes de programación proporcionan una interfaz a las funciones del sistema de archivos del sistema operativo, incluida la capacidad de establecer (cambiar) el directorio de trabajo del programa.
En el lenguaje C , la función POSIXchdir()
efectúa la llamada al sistema que cambia el directorio de trabajo. [11] Su argumento es una cadena de texto con una ruta al nuevo directorio, ya sea absoluta o relativa al anterior. Cuando esté disponible, un proceso puede llamarla para establecer su directorio de trabajo.
Existen funciones similares en otros lenguajes. Por ejemplo, en Visual Basic se suele escribir CHDIR()
.
En Java , el directorio de trabajo se puede obtener a través de la java.nio.file.Path
interfaz o a través de la java.io.File
clase. El directorio de trabajo no se puede cambiar. [12]
MPDOSTIP.ZIP
colección aún más grande del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior del NWDOSTIP.TXT
archivo convertida a HTML). [3]