Directorio de trabajo

sistema de archivos jerárquico asociado con un proceso en ejecución en un sistema operativo

En computación el directorio de trabajo de un proceso es un directorio de un sistema de archivos jerárquico, si lo hay[nb 1]​, dinámicamente asociado a cada proceso. También es llamado el directorio actual de trabajo (CWD por sus siglas en inglés: current working directory) o simplemente directorio actual.[1]

Cuándo un proceso se refiere a un archivo usando un nombre de archivo simple o una ruta relativa (a diferencia de una ruta absoluta que parte de un directorio raíz, la referencia es interpretada como relativa al directorio de trabajo del proceso. Así, por ejemplo, un proceso con un directorio de trabajo /mi-carpeta que intenta crear el archivo prueba.txt terminará creando el archivo /mi-carpeta/prueba.txt

En sistemas operativos editar

En la mayoría de las interfaces de línea de comandos de DOS y UNIX, así como en el intérprete de línea de comandos cmd.exe y PowerShell de Windows, el directorio de trabajo se puede cambiar utilizando los comandos cd o chdir. En Unix, el comando pwd devuelve la ruta completa del directorio de trabajo, mientras en DOS y Windows se puede obtener lanzando los comandos cd o chdir sin ningún argumento o parámetro ( mientras que en Unix lanzar el comando cd sin argumentos llevará al usuario a su carpeta de usuario).

En scripts, para conocer el directorio actual, se puede utilizar la variable de entorno PWD (en shells Unix/Linux), o la pseudo variable de entorno CD en command.com y cmd.exe de Windows, pero no en OS/2 ni DOS. También _CWD, _CWDS, _CWP y _CWPS (bajo 4DOS, 4OS2, 4NT etc.)[2]​. De esta manera no se necesita iniciar un programa externo para tener esta habilidad.

En BSD se puede utilizar la función getcwd[3]​.

COMMAND.COM en DR-DOS 7.02 y superiores provee el comando ECHOS, una variante del comando ECHO que omite el avance de línea final.[4][2]​ Esto puede utilizarse para crear un trabajo en batch temporal almacenando el directorio de trabajo en una variable de entorno, como CD para su uso posterior, por ejemplo:

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

De manera alternativa, en DOS Multiusuario y DR-DOS 7.02 o superior, varios comandos internos y externos soportan el argumento /B (de "Batch").[5]​ Esto modifica la salida de los comandos para que sea adecuada como entrada directa de la línea de comandos (cuando se redirecciona a un archivo batch) o para ser utilizada como parámetro para otros comandos. Dónde CHDIR emitiría una ruta como C:\DOS, un command como CHDIR /B emitiría en su lugar CHDIR C:\DOS, de manera que CHDIR /B > RETDIR.BAT crearía un trabajo batch temporal que permita retornar a esta carpeta más adelante.

El directorio de trabajo también es mostrado por el token $P[nb 2]​ del comando prompt.[6]​ Para mantener un prompt corto dentro de estructuras de subdirectorios muy profundas, el command.com de DR-DOS 7.07 soporta el token $W[nb 2]​ para desplegar solamente el nivel de subdirectorio más profundo. Dónde el PROMPT $P$G, que es el default, resultaría en algo como C:\DOS> or C:\DOS\DRDOS>, un PROMPT $N:$W$G resultaría en C:DOS> y C:DRDOS>, respectivamente. La misma facilidad (usando $W y $w) fue añadida también a 4DOS.[2]

Bajo DOS, la ruta absoluta de los directorios de trabajo de todos los volúmenes lógicos se almacena internamente en una estructura tipo arreglo llamada la Estructura de directorio actual (CDS por sus siglas en inglés: Current Directory Structure), que se asigna dinámicamente en tiempo de arranque para contener el número de elementos necesarios para todas las unidades lógicas (o lo que se haya definido en la directiva LASTDRIVE de CONFIG.SYS.[7][8][9]

Esta estructura impone un límite de 66 caracteres como longitud máxima de la ruta completa en cada directorio de trabajo e, implicitamente, limita también la máxima profundidad de subdirectorios disponible.[7]DOS Plus y anteriores versiones de DR DOS (hasta DR DOS 6.0, con BDOS 6.7 en 1991) no tienen dicha limitación[8][10][2]​ gracias a su implementación utilizando DOS emulation sobre un DOS Concurrente- (y también el kernel derivado CP/M-86-), que internamente organiza los sub-directorios como vínculos relativos a los directorios padre, en lugar de como rutas absolutas.[8][10]​ Desde que PalmDOS (con BDOS 7.0) y DR DOS 6.0 (1992 update con BDOS 7.1) y superiores cambiaron para utilizar CDS para máxima compatibilidad con programas DOS, enfrentaron las mismas limitaciones presentes en otros DOS.[8][10]

En lenguajes de programación editar

La mayoría de lenguajes de programación provee una interfaz a las funciones del sistema de archivos del sistema operativo, incluyendo la habilidad de consultar y cambiar el directorio de trabajo del programa.

En el lenguaje C, la función POSIX chdir() efectúa la llamada al sistema que cambia el directorio de trabajo.[11]​ Toma como argumento una cadena de caracteres con la ruta al nuevo directorio. Esta ruta puede ser absoluta o relativa al directorio actual al momento de la llamada. Cuando esta función está disponible, puede ser llamada por un proceso para establecer su directorio de trabajo.

Existe una función equivalente en otros lenguajes. En Visual Basic usualmente se llama CHDIR().

En Delphi/Object pascal la función se llama ChDir()[12]​.

A diferencia del API de Windows y la función del lenguaje C, ni el lenguaje de programación Java ni la Máquina virtual Java soportan directamente chdir(). Una solicitud de cambio se mantuvo abierta por más de una década mientras el equipo responsable de Java consideraba las alternativas, sin embargo para el 2008 la solicitud fue denegada después de haber introducido un soporte muy limitado (afectando primero java.lang.Runtime y después java.lang.ProcessBuilder).[13]

Véase también editar

Notas editar

  1. Hay sistemas operativos que soportan un sistema de archivos jerárquico, pero no tienen concepto de "directorio de trabajo"; por ejemplo el Texas Instruments' DX10, usado para la serie TI-990.
  2. a b De la misma manera que $O funciona como alternativa para $P bajo DR-DOS COMMAND.COM, $W tiene el alias $Y excepto que este es suprimido en disquetes para evitar retrasos en mensajes de error crítico cuándo se trata de obtener la ruta de un disquete no insertado.

Referencias editar

  1. «Microsoft Windows – SetCurrentDirectory function». Microsoft. Archivado desde el original el 27 de mayo de 2018. Consultado el 27 de mayo de 2017. 
  2. a b c d Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (27 de febrero de 2002). 4DOS 8.00 online help. 
  3. getcwd(3)
  4. DR-DOS 7.03 WHATSNEW.TXT — Changes from DR-DOS 7.02 to DR-DOS 7.03. Caldera, Inc. 24 de diciembre de 1998. Archivado desde el original el 8 de abril de 2019. Consultado el 8 de abril de 2019. 
  5. CCI Multiuser DOS 7.22 GOLD Online Documentation. Concurrent Controls, Inc. (CCI). 10 de febrero de 1997. HELP.HLP. 
  6. Caldera DR-DOS 7.02 User Guide. Caldera, Inc. 1998 [1993, 1997]. Archivado desde el original el 4 de noviembre de 2016. Consultado el 10 de agosto de 2013. 
  7. a b Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 edición). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. ISBN 978-0-201-63287-3. (requiere registro).  (xviii+856+vi pages, 3.5-inch floppy) Errata: [1][2]
  8. a b c d Paul, Matthias R. (30 de julio de 1997) [1994-05-01]. «NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds». MPDOSTIP. Release 157 (en alemán) (3 edición). Archivado desde el original el 10 de septiembre de 2017. Consultado el 6 de agosto de 2014.  (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.) [3]
  9. Brown, Ralf D., ed. (16 de julio de 2000). «Ralf Brown's Interrupt List» (61 edición). INTER61. 
  10. a b c Paul, Matthias R. (7 de junio de 1997) [April 1994]. Chapter 1.3.xi: Überlange Pfade. «NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7». MPDOSTIP. Release 85 (en alemán). Archivado desde el original el 7 de noviembre de 2016. Consultado el 7 de noviembre de 2016. 
  11. «The Open Group Base Specifications Issue 6 and IEEE Std 1003.1» (Issue 6, 2004 edición). The IEEE and The Open Group. 2004 [2001]. Archivado desde el original el 9 de febrero de 2018. Consultado el 27 de mayo de 2018. 
  12. «Ejemplo del uso de ChDir (Delphi) (en inglés)». Archivado desde el original el 12 de junio de 2021. Consultado el 5 de septiembre de 2023. 
  13. «JDK-4045688: Add chdir or equivalent notion of changing working directory». Bug Database. Oracle (Sun Microsystems). 18 de agosto de 2008 [1997-04-17]. Archivado desde el original el 19 de octubre de 2017. Consultado el 20 de febrero de 2011. 

Lecturas recomendadas (en inglés) editar

Enlaces externos editar