/usr/local/bin/ no encontrado por Automator y Java pero existe en Terminal [duplicado]

Guión de shell de Automator

echo $PATH
eval /usr/libexec/path_helper -s
echo $PATH

Resultados:

después del primero echo $PATH:

/usr/bin:/bin:/usr/sbin:/sbin

después del segundo echo $PATH:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

Como ImageMagick está instalado en /usr/local/bin, significa que falla a menos que me meta con la RUTA. Primero, alguien sabe de dónde obtiene Automator (Java es lo mismo) y cómo agregar permanentemente las rutas que faltan.

Líneas separadas echo $RUTA >> eval /usr/libexec/path_helper -s >> echo $RUTA
Resultados >> primer eco = /usr/bin:/bin:/usr/sbin:/sbin segundo eco = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/ X11/contenedor
Edité tu pregunta. Por favor revisa mis mods
Las respuestas para Automator y Java diferirán ya que la primera se inicia a través de la GUI y la segunda en la mayoría de los casos será a través de la línea de comandos; hay muchos duplicados de ambos en este sitio.

Respuestas (1)

Automator usa la variable de ruta codificada en el kernel.

sysctl user.cs_path
user.cs_path = /usr/bin:/bin:/usr/sbin:/sbin

En realidad, esta es la ruta establecida para el inicio de un usuario y luego Automator la hereda cuando inicia la aplicación.

launchctl getenv PATH
/usr/bin:/bin:/usr/sbin:/sbin

Use las rutas absolutas a sus ejecutables o modifique la RUTA en Run Shell Script.

¡Muy interesante! +1 Un simple echo $PATHen un Run Shell Script confirma esto y he tenido problemas en el pasado y ¡nunca verifiqué esto! ¡Ahora sé por qué he tenido que codificar algunas rutas! :)
También puede agregar una PATH= ...declaración, establecer lo que hay en el entorno, en la parte superior de Run Shell Script y luego no tener que codificar la ruta al ejecutable. Puede agregar eso a su respuesta si lo desea.