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 cada proceso. A veces se le llama directorio de trabajo actual (CWD) , por ejemplo , función BSD , o simplemente directorio actual . [1] Cuando el proceso se refiere a un archivo que utiliza 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 un directorio de trabajo /rabbit-shoesque solicita crear el archivo foo.txtterminará creando el archivo /rabbit-shoes/foo.txt.
En sistemas operativos
En la mayoría de los sistemas de archivos de computadora, cada directorio tiene una entrada (generalmente llamada " .") que apunta al directorio en sí.
En la mayoría de los shells 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 usando los comandos o . En los shells 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, si se usa sin argumentos, el usuario regresa a su directorio de inicio ).CDCHDIR pwdCDCHDIRcd
La variable de entorno PWD (en cáscaras de Unix / Linux), o las variables de pseudo-entorno CD (en Win COMMAND.COM y cmd.exe , pero no en OS / 2 y DOS), o _CWD, _CWDS, _CWPy _CWPS(bajo 4DOS , 4OS2 , 4NT etc. .) [2] se puede utilizar en scripts, por lo que no es 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 superior proporciona ECHOSuna variante del ECHOcomando que omite el salto de línea de terminación. [3] [2] 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:
ECHOS SET CD => SETCD.BATCHDIR >> SETCD.BATLLAMAR SETCD.BATDEL SETCD.BAT
Alternativamente, bajo Multiuser DOS y DR-DOS 7.02 y superior, varios comandos internos y externos admiten un parámetro /B(para "Batch"). [4] 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 su uso como parámetro para otros comandos (usándolo como entrada para otro comando). Donde CHDIRse emitiría una ruta de directorio como C:\DOS
, CHDIR /Bse emitiría un comando como en su CHDIR C:\DOS
lugar, de modo que CHDIR /B > RETDIR.BATcrearí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 [5] Para mantener el indicador breve incluso dentro de estructuras de subdirectorio profundas, DR-DOS 7.07 COMMAND.COM admite un token $W[nb 2] para mostrar solo el nivel de subdirectorio más profundo. Entonces, cuando un valor predeterminado PROMPT $P$Gresultaría en fe en C:\DOS>
o C:\DOS\DRDOS>
, a en su PROMPT $N:$W$Glugar produciría C:DOS>
y C:DRDOS>
, respectivamente. También se agregó una instalación similar (usando $Wy $w) a 4DOS . [2]
Bajo DOS, las rutas absolutas de los directorios de trabajo de todos los volúmenes 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 ( o según lo definido por LASTDRIVE . [6] [7] 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. [6] DOS Plus y versiones anteriores. problemas de DR DOS (hasta DR DOS 6.0 en 1991) no tenían tal limitación [7] [8] [2] debido a su implementación usando una emulación de DOS sobre un DOS concurrente - (y por lo tanto CP / M-86 - ) kernel derivado, que organizaba internamente subdirectorios como enlaces relativos a directorios principales en lugar de rutas absolutas. [7] [8] Desde PalmDOS y DR DOS 6.0 (desde 1992) y versiones posteriores, se cambió para usar un CDS para una máxima compatibilidad con programas de DOS como bueno, enfrentaron las mismas limitaciones que las presentes en o otras DOSIS. [7] [8]
En lenguajes de programación
La mayoría de los lenguajes de programación proporcionan una interfaz para 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. [9] Su argumento es una cadena de texto con una ruta al nuevo directorio, ya sea absoluta o relativa al antiguo. Cuando esté disponible, un proceso puede llamarlo para establecer su directorio de trabajo.
Existe la misma función en otros idiomas. En Visual Basic se suele escribir CHDIR()
.
A diferencia de la función API de Windows o POSIX C , ni el lenguaje de programación Java ni la máquina virtual Java son compatibles chdir()
directamente; [ aclaración necesaria ] una solicitud de cambio permaneció abierta durante más de una década mientras el equipo responsable de Java consideraba las alternativas, aunque en 2008 la solicitud fue denegada después de que se introdujo solo un soporte limitado (afectando primero java.lang.Runtime
y después java.lang.ProcessBuilder
). [10]
Ver también
- Directorio de inicio
- Directorio raíz
- Directorio de padres
- chroot (sistemas Linux)
- Unidad de carga (un concepto diferente, pero relacionado)
Notas
- ^ Hay sistemas operativos que admiten un sistema de archivos jerárquico pero no tienen el concepto de "directorio de trabajo"; por ejemplo, el DX10 de Texas Instruments , utilizado para laserie TI-990 .
- ^ Un b De la misma manera que $Ofunciona como alternativa a $Pbajo DR-DOS COMMAND.COM , $Wtiene un alias $Ya excepción de que se suprimió en disquetes con el fin de evitar errores críticos mensajes o retrasos al intentar recuperar el camino de un no insertado disquete.
Referencias
- ^ "Microsoft Windows - función SetCurrentDirectory" . Microsoft . Archivado desde el original el 27 de mayo de 2018 . Consultado el 27 de mayo de 2017 .
- ^ a b c d Hermanos, Hardin; Rawson, Tom ; Conn, Rex C .; Paul, Matthias R .; Dye, Charles E .; Georgiev, Luchezar I. (27 de febrero de 2002). Ayuda en línea de 4DOS 8.00 .
- ^ DR-DOS 7.03 WHATSNEW.TXT - Cambios de DR-DOS 7.02 a 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 .
- ^ CCI Multiuser DOS 7.22 GOLD Documentación en línea . Controles concurrentes, Inc. (CCI). 1997-02-10. HELP.HLP.
- ^ Guía del usuario de Caldera DR-DOS 7.02 . Caldera, Inc. 1998 [1993, 1997]. Archivado desde el original el 4 de noviembre de 2016 . Consultado el 10 de agosto de 2013 .
- ^ a b Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J .; Kyle, Jim (1994) [noviembre de 1993]. DOS sin documentar: una guía del programador para las funciones y estructuras de datos reservadas de MS-DOS, expandida para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley . ISBN 0-201-63287-X. ISBN 978-0-201-63287-3 .(xviii + 856 + vi páginas, disquete de 3,5 pulgadas) Errata: [1] [2]
- ^ a b c d Paul, Matthias R. (30 de julio de 1997) [1 de mayo de 1994]. NWDOS-TIPs - Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds . MPDOSTIP . Release 157 (en alemán) (3 ed.). Archivado desde el original el 10 de septiembre de 2017 . Consultado el 6 de agosto de 2014 .(NB. NWDOSTIP.TXT es un trabajo completo sobre Novell DOS 7 y OpenDOS 7.01, que incluye la descripción de muchas características y elementos internos no documentados. Es parte de la
MPDOSTIP.ZIP
colección aún mayor del autor, mantenida hasta 2001 y distribuida en muchos sitios en ese momento. El enlace proporcionado apunta a una versión anterior delNWDOSTIP.TXT
archivo convertida en HTML ). [3] - ^ a b c Paul, Matthias R. (7 de junio de 1997) [abril de 1994]. "Capítulo 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 .
- ^ "The Open Group Base Especificaciones Edición 6 e IEEE Std 1003.1" (Edición 6, ed. 2004). El IEEE y The Open Group . 2004 [2001]. Archivado desde el original el 9 de febrero de 2018 . Consultado el 27 de mayo de 2018 .
- ^ "JDK-4045688: Agregar chdir o una noción equivalente de cambiar el directorio de trabajo" . Base de datos de errores . Oracle ( Sun Microsystems ). 2008-08-18 [1997-04-17]. Archivado desde el original el 19 de octubre de 2017 . Consultado el 20 de febrero de 2011 .
Otras lecturas
- Chen, Raymond (11 de octubre de 2010). "¿Por qué cada unidad tiene su propio directorio actual?" . Lo nuevo y viejo . Microsoft . Archivado desde el original el 12 de abril de 2016 . Consultado el 27 de mayo de 2017 .
- Chen, Raymond (6 de mayo de 2010). "¿Cuáles son estas extrañas = C: variables de entorno?" . Lo nuevo y viejo . Microsoft . Archivado desde el original el 27 de mayo de 2018 . Consultado el 27 de mayo de 2017 .
enlaces externos
- Working Directory (wd) en Github : un paquete de software que rastrea los directorios de uso común en una sesión de bash