/usr/local/bin/ nicht von Automator und Java gefunden, aber im Terminal vorhanden [Duplikat]

Automator-Shell-Skript

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

Ergebnisse:

nach dem ersten echo $PATH:

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

nach dem zweiten echo $PATH:

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

Da ImageMagick in /usr/local/bin installiert ist, bedeutet dies, dass es fehlschlägt, es sei denn, ich spiele mit dem PATH herum, bevor jemand weiß, woher Automator (Java ist das gleiche) seinen Pfad bezieht und wie die fehlenden Pfade dauerhaft hinzugefügt werden

Separate Zeilen echo $PATH >> eval /usr/libexec/path_helper -s >> echo $PATH
Ergebnisse >> erstes Echo = /usr/bin:/bin:/usr/sbin:/sbin zweites Echo = /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/ X11/bin
Ich habe Ihre Frage bearbeitet. Bitte überprüfen Sie meine Mods
Die Antworten für Automator und Java unterscheiden sich, da die erste über die GUI gestartet wird und die zweitmeisten Fälle über die Befehlszeile erfolgen - es gibt viele Duplikate von beiden auf dieser Website

Antworten (1)

Automator verwendet die im Kernel fest codierte Pfadvariable.

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

Tatsächlich ist dies der Pfad, der für den launchd eines Benutzers festgelegt wurde und dann von Automator geerbt wird, wenn Sie die Anwendung starten.

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

Verwenden Sie die absoluten Pfade zu Ihren ausführbaren Dateien oder ändern Sie den PATH im Run Shell Script.

Sehr interessant! +1 Ein einfaches echo $PATHin einem Run Shell Script bestätigt dies und ich hatte in der Vergangenheit Probleme und habe dies nie überprüft! Jetzt weiß ich, warum ich einige Pfade fest codieren musste! :)
Sie können auch eine PATH= ...Anweisung, die auf die Umgebung eingestellt ist, oben im Run Shell Script hinzufügen und müssen dann den Pfad zur ausführbaren Datei nicht fest codieren. Sie können das Ihrer Antwort hinzufügen, wenn Sie möchten.