PATH es una variable de entorno en sistemas operativos tipo Unix , DOS , OS/2 y Microsoft Windows , que especifica un conjunto de directorios donde se encuentran los programas ejecutables. En general, cada proceso en ejecución o sesión de usuario tiene su propia configuración PATH.
Multics fue el creador de la idea de una ruta de búsqueda. El primer shell de Unix solo buscaba nombres de programas en /bin
, pero en la versión 3 de Unix el directorio era demasiado grande y /usr/bin
, y una ruta de búsqueda, pasaron a formar parte del sistema operativo. [1]
En los sistemas operativos POSIX y similares a Unix, la $PATH
variable se especifica como una lista de uno o más nombres de directorio separados por :
caracteres de dos puntos ( ). [2] [3]
Los directorios en la PATH
cadena - no deben ser escapados, lo que hace imposible tener directorios con :
en su nombre. [4]
Los directorios /bin
, /usr/bin
, y /usr/local/bin
se incluyen normalmente en $PATH
la configuración de la mayoría de los usuarios (aunque esto varía de una implementación a otra). El superusuario también suele tener entradas /sbin
y para ejecutar fácilmente los comandos de administración del sistema . A veces, los usuarios también incluyen el directorio actual ( ), lo que permite ejecutar directamente los programas que residen en el directorio de trabajo actual . Los administradores de sistemas, por regla general, no lo incluyen para evitar la ejecución accidental de scripts que residen en el directorio actual, como los que puede colocar allí un tarbomb malicioso . En ese caso, ejecutar un programa de este tipo requiere especificar una ruta absoluta ( ) o relativa ( ) en la línea de comandos./usr/sbin
.
$PATH
/home/userjoe/bin/script.sh
./script.sh
Cuando el usuario especifica un nombre de comando o se realiza una llamada exec$PATH
desde un programa, el sistema busca en , examinando cada directorio de izquierda a derecha en la lista, en busca de un nombre de archivo que coincida con el nombre del comando. Una vez encontrado, el programa se ejecuta como un proceso secundario del shell de comandos o del programa que emitió el comando.
En los sistemas operativos DOS, OS/2 y Windows, la %PATH%
variable se especifica como una lista de uno o más nombres de directorio separados por ;
caracteres de punto y coma ( ). [5]
El directorio del sistema de Windows (normalmente C:\WINDOWS\system32
) suele ser el primer directorio de la ruta, seguido de muchos (pero no todos) los directorios de los paquetes de software instalados. Muchos programas no aparecen en la ruta, ya que no están diseñados para ejecutarse desde una ventana de comandos , sino desde una interfaz gráfica de usuario . Algunos programas pueden añadir su directorio al principio del contenido de la variable PATH durante la instalación, para acelerar el proceso de búsqueda y/o anular los comandos del sistema operativo. En la era de DOS, era habitual añadir una línea o a AUTOEXEC.BAT .PATH {program directory};%PATH%
SET PATH={program directory};%PATH%
Cuando se introduce un comando en un shell de comandos o un programa realiza una llamada al sistema para ejecutar un programa, el sistema primero busca en el directorio de trabajo actual y luego en la ruta, examinando cada directorio de izquierda a derecha, en busca de un nombre de archivo ejecutable que coincida con el nombre del comando proporcionado. Los programas ejecutables tienen extensiones de nombre de archivo EXE
o COM
, y los scripts por lotes tienen extensiones BAT
o CMD
. También se pueden registrar en el sistema otras extensiones de nombre de archivo ejecutable.
Una vez que se encuentra un archivo ejecutable coincidente, el sistema genera un nuevo proceso que lo ejecuta.
La variable PATH facilita la ejecución de programas de uso común ubicados en sus propias carpetas. Sin embargo, si se utiliza de forma imprudente, el valor de la variable PATH puede ralentizar el sistema operativo al buscar en demasiadas ubicaciones o en ubicaciones no válidas.
Las ubicaciones no válidas también pueden impedir que los servicios se ejecuten por completo, especialmente el servicio "Servidor", que suele ser una dependencia de otros servicios dentro de un entorno de Windows Server.