web-dev-qa-db-fra.com

Mac OS X 10.9 - Définition de variables d'environnement permanentes

Comment définir une variable d’environnement permanente (c’est-à-dire une variable qui n’a pas besoin d’être exportée à chaque démarrage d’une nouvelle session Terminal) sous Mac OS X 10.9? J'ai trouvé un certain nombre de réponses sur la modification de mon .bash_profile et .profile, cependant, aucune de ces options ne semble fonctionner comme une solution permanente - seulement temporaire. La variable que j'essaie de définir est MULE_HOME. J'ai la ligne suivante dans mon profil bash:

export MULE_HOME=$(/opt/mule-standalone-3.4.0)

Cependant, lorsque je démarre Terminal, la ligne suivante est affichée (vous ne savez pas s'il s'agit d'un comportement normal?):

-bash: /opt/mule-standalone-3.4.0: is a directory

Et l'exécution d'une simple commande env renvoie les éléments suivants:

TERM_PROGRAM=Apple_Terminal
Shell=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/fc/68bqp4jj411gynj5qvwhq6z1shs1fy/T/
Apple_PubSub_Socket_Render=/tmp/launch-xKtkql/Render
TERM_PROGRAM_VERSION=326
TERM_SESSION_ID=E97BFE4B-AF85-4933-B252-0883CC085349
USER=dan
SSH_AUTH_SOCK=/tmp/launch-rEmTWW/Listeners
__CF_USER_TEXT_ENCODING=0x730C85DE:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
__CHECKFIX1436934=1
PWD=/Users/dan
Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
LANG=en_GB.UTF-8
MULE_HOME=
SHLVL=1
HOME=/Users/dan
LOGNAME=danwiseman
_=/usr/bin/env

Pour résoudre ce problème, je dois actuellement taper export MULE_HOME=/opt/mule-standalone-3.4.0 chaque fois que je lance une nouvelle session de terminal qui, bien que peu fatigante, est un peu gênant. Qu'est-ce que je fais mal ici pour que la variable ne soit définie que temporairement? Merci d'avance.

54
danw

Supprimez le bit $(...), qui tentera d'exécuter la commande entre crochets et définira $MULE_HOME à tout ce qu'il produit. Dans ton cas /opt/mule-standalone-3.4.0 n'est pas un exécutable, d'où l'erreur que vous obtenez.

export MULE_HOME=/opt/mule-standalone-3.4.0

et utilise ~/.bashrc ne pas ~/.bash_profile.

EDIT: Il semble que vous devriez définir des variables d’environnement dans votre ~/.bash_profile script, et pas ~/.bashrc script.

41
trojanfoe

Vient de faire cela vraiment facile et rapide. Commencez par créer un ~/.bash_profile depuis le terminal:

touch ~/.bash_profile

puis

open -a TextEdit.app ~/.bash_profile

ajouter

export Tomcat_HOME=/Library/Tomcat/Home

Enregistrez le document dans TextEdit et vous avez terminé.

44
CodeOverRide

Vous pouvez également ajouter la commande suivante à votre .bash_profile si vous souhaitez que vos variables d’environnement soient visibles par les applications graphiques. Sous Mac OS X, les applications graphiques n'héritent pas de votre configuration .bash_profile:

launchctl setenv MYPATH myvar
4
Jean-Philippe Bond

Vous pouvez mettre votre déclaration d'exportation dans ~/.bashrc

3
Anthony Kong

Il semble que Apple ne cesse de changer la façon de procéder. Et tout est une question de contexte. Une manière ne fonctionne pas nécessairement quand une autre le fait. J'avais besoin que cela fonctionne dans un IDE, et aucun des deux Les fichiers mentionnés ici (style Linux) ont fait cela. Le moyen actuel pour les applications GUI de respecter cela de façon permanente est SUPER alambiqué par rapport à Windows et Linux!

En un mot, vous avez écrit une énorme pile de XML déplaisant dans un fichier plist pour exécuter quelques bash. Cela va dans votre répertoire "agents de lancement", c'est-à-dire ~/Library/LaunchAgents/my.startup.plist. Voici un autre thread Stack Exchange sur le sujet:

https://Apple.stackexchange.com/questions/106355/setting-the-system-wide-path-environment-variable-in-mavericks

Cela vous donne un copier/coller complet que vous pouvez modifier pour définir votre variable spécifique.

1
BuvinJ