• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

$PATH in Automator-Programm

commune10

Adams Apfel
Registriert
11.08.11
Beiträge
522
Für einen Freund, der keine Ahnung von Computern hat, möchte ich ein Shellscript in ein einfach doppelklickbares Programm verpacken. Das klappt mit Automator auch einwandfrei. In dem Shellscript verwende ich ein via Homebrew nach "/usr/local/bin" installiertes Programm. Scheinbar wird "$PATH" in dem Automatorprogramm nicht ausgewertet, so das ich den kompletten Pfad angeben musste, damit das Automatorprogramm korrekt läuft. Das ist natürlich nicht schön, also habe ich im Automatorprogramm "source ~/.profile" hinzugefügt, was zwar funktioniert, was ich aber auch nicht richtig elegant finde, da in meiner .profile-Datei so einiges drin steht. Kennt jemand eine Möglichkeit, dem Automatorprogramm den via ".profile" exportierten $PATH direkt bekannt zu machen?
 
1) Automator-Skripte erben das Environment direkt von der launchd-Instanz, welche die Benutzerumgebung hütet.
Kannst du einsehen mit:
Code:
launchctl  export

2) Setzen kannst du diese Umgebung für alle Benutzer mit der optionalen launchd-Konfigurationsdatei
"/etc/launchd-user.conf" - Ein entsprechender Eintrag dort wäre zB:
Code:
setenv  PATH  /usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin
Ist aber etwas gefährlich - machst du irgendwelchen Mist, kannst du dich nicht mehr anmelden.

3) Du könntest natürlich auch an der "~/.profile" o.ä. nuckeln, aber wozu?
Setze den Pfad doch einfach im Automator-Skript selbst neu, wie in jedem anderen Skript auch. Und bei der Gelegenheit auch noch was anderes, das eigentlich in *jedem* Skript sauber gesetzt werden sollte::
Code:
#!/bin/bash
export PATH="/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin"
export LC_ALL=C
# usw.....
 
  • Like
Reaktionen: kybdf2 und lauritzh
"Du könntest natürlich auch an der "~/.profile" o.ä. nuckeln, aber wozu?" Das ist genau der Weg, den ich momentan (s.o.) gehe. Finde ich halt nur nicht sonderlich elegant. Den Pfad im Automatorscript neu exportieren ist natürlich auch möglich, aber eben auch nicht sonderlich elegant, denn die Information wo das Programm zu finden ist existiert ja bereits.

"launchctl export" finde ich aber sehr interessant, auch wenn es nicht zur Lösung *DIESES* Problems beiträgt. Bei mir enthält $PATH dort nur die Standardwerte. Alles was ich via .profile hinzugefügt habe erscheint dort nicht. Insbesondere "…/local/…" oder "/usr/texbin" taucht dort gar nicht auf.

Trotzdem vielen Dank!
 
Den Pfad im Automatorscript neu exportieren ist natürlich auch möglich, aber eben auch nicht sonderlich elegant
Das soll auch gar nicht elegant sein, sondern zuverlässig.
Für diejenigen Skripte, die evtl auch mal mit root-Rechten laufen, ist das ein unbedingtes "MUST HAVE".

denn die Information wo das Programm zu finden ist existiert ja bereits.
Die PATH-Variable ist kein administratives Konfigurationsmittel. Das ist nur eine kleine "Quick and Dirty" Arbeitshilfe für tippfaule Anwender, etwa so bedeutend wie der Befehlsverlauf oder die gewählte Benutzersprache.
Ein Progger der sich auf dessen Existenz und/oder einen bestimmten Inhalt blind verlässt, ist nichts weniger als ein furioser Stümper.

Bei mir enthält $PATH dort nur die Standardwerte. Alles was ich via .profile hinzugefügt habe erscheint dort nicht.
Selbstverständlich nicht. launchd startet ja auch keine Login-Shell.
---> "man bash" --> "Invocation"
 
Das klingt ziemlich interessant, da werde ich mich wohl mal etwas mit auseinandersetzen müssen. Vielen Dank für den Tipp! @Rastafari Arrggghhh, darf wieder kein Karma geben. Ich hoffe es kommt zu keinem Karma-Stackoverflow!
 
Hallo zusammen, selbiges war mir neulich auch aufgefallen und wird mir durch diesen Thread nun klar. Vielen Dank dafür ;)

@Rastafari: Was genau bewirkt folgende Zeile?

Code:
export LC_ALL=C

Grüße,
kybdf2
 
Cool, danke. :) Hast du evtl Lust, dir das mal anzuschauen? Mein Automator Skript läuft nicht, wie es soll und ich weiß nicht warum.