11
votes

Variable Setenv avec des espaces dans launchd.conf?

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: xxx

après un redémarrage uniquement Var # 5 et # 8 survivre. (Ceux sans espaces.) Aucun des autres ne sont dans mon environnement.


4 commentaires

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?


5 Réponses :


2
votes

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

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.


0 commentaires

7
votes

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>


2 commentaires

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?



2
votes

sur 10.8.2 La commande suivante fonctionne bien:

$ launchctl getenv MY_VARIABLE
My value with spaces


1 commentaires

launchctl dans la borne et launchd.conf sont complètement indépendants. BASH PARSESSES BACKSLASHES, LANCHND.CONF n'est pas.



3
votes

ajoutez la ligne suivante à /etc/launchd.conf (Créez s'il n'existe pas)

setenv my_variable ma \ valeur \ avec \ espaces

Notez que cela n'aura qu'un effet après le redémarrage.

Pour utiliser la nouvelle valeur sans avoir à redémarrer, en outre exécutez la commande dans le terminal

LaunkCtL Setenv My_Variable My \ Value \ avec \ espaces
Comme le suggéra Patrikha.

Notez que cela n'aura qu'un effet pour les applications commencées après avoir exécuté la commande. Manipulation /etc/launchd.conf est toujours nécessaire pour conserver le changement après le redémarrage.


0 commentaires

1
votes

dans 10.13.2, cela fonctionne pour moi:

LaunkCtl Setenv my_variable 'Ma valeur avec des espaces'

Mais pour être spécifique, j'utilise Editeur de script pour créer une application (~ / startutupenvvars.app) contenant des lignes telles que ceci:

Script shell "launchctl setenv my_variable 'ma valeur avec des espaces'"

ALORS, dans Paramètres | Utilisateurs | Connexion Éléments I Ajouter cette application en tant qu'élément de démarrage.

Ç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.

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.


0 commentaires