varios procesos ejecutar desde comandos java path command processbuilder

desde - ejecutar procesos java



¿Dónde busca Java ProcessBuilder para ejecutar comandos? (2)

Cuando ejecuto un comando usando ProcessBuilder , ¿cómo sabe dónde buscar ese comando? Usando este truco / truco , he modificado mi variable PATH (verificada mediante la inspección de processBuilder.environment() ) para que sea mala (vacío, directorio de trabajo, etc.) pero ProcessBuilder todavía puede ejecutar sort, echo, bash, etc. bien. ¿Cómo está haciendo esto?

Nota: Mi entorno de desarrollo particular es OSX, pero este código también se ejecutará en Red Hat Enterprise Linux.


La documentación dice

[...] un comando, una lista de cadenas que significa el archivo de programa externo que se invocará y sus argumentos, si los hay. Las listas de cadenas que representan un comando válido del sistema operativo dependen del sistema. [...]

Lo que en esencia significa que el lugar donde los programas se ejecutan depende del sistema particular y de la JVM en la que se ejecute.

No puedo encontrar una matriz completa de comportamientos de JVM / Sistema, pero supuestamente se comporta de manera similar a los shells populares del sistema ( bash para * nix y cmd para windows) es decir, busca en los directorios en la PATH entorno PATH de izquierda a derecha y ejecuta el primer archivo ejecutable que encuentra.


Si desea tomar el control de encontrar comandos, entonces, tome el control de encontrar comandos. No permita que ProcessBuilder busque. Use su propio código para encontrar lo que desea ejecutar, y luego ponga una ruta de acceso absoluta en el parámetro para ProcessBuilder .