Je suis un utilisateur Linux qui a récemment reçu un Mac. J'essaie de configurer mon IDE et découvrez que les MAC n'utilisent pas .CASHRC / .BASH_Profile / etc. pour les applications GUI. Donc, si vous avez une application d'interface graphique qui a besoin d'une variable d'environnement, vous êtes apparemment censé le faire dans /etc/launchd.conflefected, ce fichier utilise le style CSH Setenv Syntaxe ("SetenV Key Valeur". de "Clé d'exportation =" valeur ")") Alors maintenant que j'ai une variable qui a une place dedans, je ne sais pas quoi faire. Rien ne fonctionne. C'est ce que j'ai essayé de le tester: p> après un redémarrage uniquement Var # 5 et # 8 survivre. (Ceux sans espaces.) Aucun des autres ne sont dans mon environnement. P> p>
5 Réponses :
Il ne fonctionne pas comme dans une coquille C car /etc/launchd.conf n'est rien d'autre qu'une séquence de commandes spéciales pour LauntCl. Voir la page KningCtl Man pour une référence sur ce qui fonctionne dans /etc/launchd.conf P>
Malheureusement, cela ne vous aidera toujours pas à résoudre ce problème, mais j'espère que cela clarifiera un peu le contexte. Pour moi, ce problème est une lacune dans les outils de LaunchCTL / Launchd d'Apple. J'ai du mal à travailler moi-même moi-même. P>
Essayez d'utiliser launchd à la place (Créer un plat /Library/Launchdaemons/java.props.plist):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>java.props</string> <key>ProgramArguments</key> <array> <string>launchctl</string> <string>setenv</string> <string>JAVA_OPTS</string> <string>-Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>LaunchOnlyOnce</key> <true/> </dict> </plist>
Mille mercis! Je cherchais une solution pour cela toute la journée. C'est la seule chose qui fonctionne à l'échelle mondiale.
Que diriez-vous de plus d'une variable d'environnement?
sur 10.8.2 La commande suivante fonctionne bien:
$ launchctl getenv MY_VARIABLE My value with spaces
launchctl code> dans la borne et
launchd.conf code> sont complètement indépendants.
BASH CODE> PARSESSES BACKSLASHES,
LANCHND.CONF CODE> n'est pas.
ajoutez la ligne suivante à Notez que cela n'aura qu'un effet après le redémarrage. P>
Pour utiliser la nouvelle valeur sans avoir à redémarrer, Notez que cela n'aura qu'un effet pour les applications commencées après avoir exécuté la commande. Manipulation /etc/launchd.conf code> (Créez s'il n'existe pas) p>
setenv my_variable ma \ valeur \ avec \ espaces
code> p>
LaunkCtL Setenv My_Variable My \ Value \ avec \ espaces
code>
Comme le suggéra Patrikha. P>
/etc/launchd.conf code> est toujours nécessaire pour conserver le changement après le redémarrage. P>
dans 10.13.2, cela fonctionne pour moi: P>
LaunkCtl Setenv my_variable 'Ma valeur avec des espaces' P>
Mais pour être spécifique, j'utilise Editeur de script pour créer une application (~ / startutupenvvars.app) contenant des lignes telles que ceci: p>
Script shell "launchctl setenv my_variable 'ma valeur avec des espaces'" p>
ALORS, dans Paramètres | Utilisateurs | Connexion Éléments I Ajouter cette application en tant qu'élément de démarrage. P>
Ça fonctionne, avec cette mise en garde: si je dispose du terminal et de l'application de l'exécutation lorsque je vous déconnecte et choisissez de rouvrir Windows lors de la journalisation, après la charge automatique des applications lorsque je me connecte, ils ne voient pas l'environnement Variables définies par Startupenvvars.app. Mais si je ferme ces applications et que je les rouvre, alors ils voient les variables d'environnement. P>
S'il s'agissait d'un terminal seulement, j'utiliserais .bash_profile, mais je souhaite définir env Vares à utiliser dans R aussi. Je pense qu'il y a eu environ 5 façons de définir Global Env Vars à OSX depuis que j'ai commencé à l'utiliser. Chaque nouvelle version majeure a une nouvelle façon de le faire. Ennuyeux. P>
Avez-vous compris comment le faire fonctionner? J'ai le même problème. J'ai également remarqué que Concat Vars ne fonctionne pas. Je ne peux pas spécifier: setenv mv 1 setenv mv12 $ mv / 2
Non désolé. Espérons qu'une autre, une âme bien informée abandonnera une journée et laissez-nous savoir la solution. ;)
J'ai exactement le même problème. ces env Vares problèmes, chaque fois que la même chose est un problème différent: s
Avez-vous essayé la suggestion de Serge? Cela a-t-il fonctionné pour vous?