Si hay un directorio en la ruta de búsqueda donde alguien en quien no confías podría escribir archivos, entonces el directorio no debería estar en la ruta, punto.
El orden solo importa si un comando está presente en más de una entrada en la lista. Por lo tanto, el único caso a considerar es cuando alguien digno de confianza dispuso que una entrada siga a otra, deliberadamente o no.
Si fue deliberado, entonces el orden debería ser buscar en los directorios por orden de administración local: por lo general, esto significa primero ~/bin
o equivalente si se ejecuta bajo una cuenta que tiene dicho directorio (no aplicable a la mayoría de las cuentas del sistema) , luego /usr/local/bin
, luego los directorios administrados por el administrador de paquetes /usr/bin/
y /bin
.
En principio, no debería haber ninguna sombra entre los directorios sbin
y bin
. Los directorios sbin
son para comandos que solo son útiles para un administrador del sistema (es por eso que estos directorios normalmente no están en la ruta de otros usuarios que no sean raíz). En principio, podría haber un nombre de comando para el que desea ejecutar un ejecutable diferente como root, por lo que los directorios sbin
deberían estar por delante del directorio bin
correspondiente; de lo contrario, …/sbin/foo
nunca se ejecutaría ya que estaría sombreado por …/bin/foo
para todos.
El único caso en el que existe una ambigüedad es si puede haber habido sombras accidentales. En ese caso no hay una respuesta obvia. En general, no tiene mucho sentido poner /usr/local/bin
después de /usr/bin
: si no desea que el administrador local elija los comandos, entonces no ponga /usr/local/bin
en la ruta de búsqueda (y elimine /usr/local/lib
de la ruta de búsqueda de la biblioteca, etc.).
Entre /usr/bin
y /bin
, en principio, es posible que desee sombrear un ejecutable de /bin
(versión pequeña solo para el tiempo de arranque) con uno de /usr/bin
(versión grande de un% co_de montado por separado % partición), pero las particiones raíz pequeñas con un /usr
separado son una práctica muy poco frecuente en estos días. Era una práctica más común en los días en que los sistemas operativos utilizaban un espacio de disco significativo, pero incluso en ese caso las utilidades en /usr
con versiones de /bin
eran poco comunes. El otro pedido, poniendo primero /usr/bin
, tiene un ligero beneficio en el rendimiento ( /bin
suele ser mucho más pequeño). En la mayoría de los sistemas no hay una razón sólida para preferir un pedido sobre el otro. (En algunos sistemas, /bin
y /bin
son el mismo directorio, pero no debe suponer que a menos que solo trabaje en versiones recientes de una de las distribuciones que hacen esto).
/usr/bin
(o PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
) suele ser la configuración correcta para trabajos que se ejecutan como root, y PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
para trabajos que no se ejecutan como root. No veo ninguna buena razón para desviarme de eso (excepto por la inversión PATH=/usr/local/bin:/usr/bin:/bin
vs. /usr
) excepto para atender las variaciones locales (por ejemplo, un directorio específico del sitio en * BSD distinto de los paquetes instalados a /
). En cuanto a seguridad, no importa, pero en cuanto a funcionalidad, poner a /usr/local
por delante de /usr/local
y /usr
es indiferente o necesario.