Ist es möglich, meine zu komponieren? launchd.plist
Datei, damit ein eingebetteter Ausdruck ausgewertet und nicht als Literalwert behandelt wird? Und wenn ja, wie?
Ich habe ein ~/Library/LaunchAgents/setenv.JAVA_HOME.plist
Datei, die a enthält /bin/launchctl
wie folgt anrufen:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.JAVA_HOME</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>JAVA_HOME</string>
<string>$(/usr/libexec/java_home -v1.8)</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Das Problem ist, die $(/usr/libexec/java_home -v1.8)
Ausdruck wird nicht ausgewertet und stattdessen die JAVA_HOME
Umgebungsvariable wird der Literalwert zugewiesen $(/usr/libexec/java_home -v1.8)
.
Ich habe diese Frage in gestellt Paketüberfluss letzte woche hatte aber so wenige ansichten ich vermute das das nicht der ort dafür ist.
macos
el-capitan
launchd
Adil Hussain
quelle
quelle
Antworten:
Ich habe eine Antwort auf die ursprüngliche Frage zum Stapelüberlauf erhalten. Ist es möglich, einen Ausdruck im Array ProgramArguments von launchd auszuwerten?
Mit diesem Bash-Befehl ist Folgendes möglich:
Die gewünschte plist-Datei lautet wie folgt:
quelle
JAVA_HOME
Umgebungsvariable auf Ihrem Computer nach dem Laden der oben genannten Datei bei der Anmeldung? Das heißt, was wird in Terminal gedruckt, wenn Sie diesen Befehl ausführen:launchctl getenv JAVA_HOME
?Obwohl dies als Kommentar besser geeignet ist, ist es viel zu lang, so dass ich es zu einer Antwort gemacht habe:
Technische Daten:
Mit zwei verschiedenen Plisten test.so.global installiert in / Library / LaunchDaemons mit dem Inhalt:
und test.so.user installiert in ~ / Library / LaunchAgents mit dem Inhalt:
und beide geladen bekomme ich folgende ergebnisse:
Wird nur geladen test.so.global ergibt:
Wird nur geladen test.so.user ergibt:
Verwenden Sie also je nachdem, wie / wo Sie JAVA_HOME einstellen möchten, entweder beide oder eine der beiden Plisten.
quelle