web-dev-qa-db-fra.com

Définir des variables d'environnement sur Mac OS X Lion

Quand quelqu'un dit "éditez votre fichier .plist" ou "votre .profile" ou ".bash_profile" etc., cela me perturbe. Je ne sais pas du tout où se trouvent ces fichiers, comment les créer si je dois le faire, etc., et aussi pourquoi il semble y en avoir tellement différents (pourquoi? Ils font des choses différentes?)

Quelqu'un pourrait-il donc expliquer très patiemment à un utilisateur précédent de Windows (qui souhaite désespérément se familiariser davantage avec le monde plaisant, mais au départ, un peu déroutant), comment procéder étape par étape?

J'ai besoin que les variables soient définies à la fois pour les applications à interface graphique et les applications en ligne de commande. À l'heure actuelle, c'est pour un script ant qui a besoin des variables, mais il y aura probablement d'autres besoins également.

Veuillez noter que j'ai aussi Lion, car bon nombre des réponses que vous obtenez à Google semblent être dépassées pour Lion ...

Notez également que je n'ai pratiquement aucune expérience d'utilisation du terminal. Je suis disposé à apprendre, mais expliquez s'il vous plaît pour un novice ...

521
Anders

Premièrement, une chose à reconnaître à propos d’OS X est qu’il repose sur Unix. C’est là que le fichier .bash_profile entre en jeu. Lorsque vous démarrez l’application Terminal sous OS X, vous obtenez un shell bash par défaut. Le shell bash provient d’Unix et lorsqu’il est chargé, il exécute le script .bash_profile. Vous pouvez modifier ce script pour que votre utilisateur modifie vos paramètres. Ce fichier se trouve à:

~/.bash_profile

Mise à jour pour Mavericks

OS X Mavericks n'utilise pas environment.plist - du moins pas pour les applications Windows OS X. Vous pouvez utiliser le launchd configuration pour les applications fenêtrées. Le fichier .bash_profile est toujours pris en charge car il fait partie du bash Shell utilisé dans Terminal.

Lion et lion de montagne uniquement

Les applications OS X fenêtrées reçoivent les variables d’environnement à partir du fichier environment.plist. C'est probablement ce que vous entendez par le fichier ".plist". Ce fichier se trouve à:

~/.MacOSX/environment.plist

Si vous modifiez votre fichier environment.plist, les variables d'environnement de ces applications Windows, y compris de l'application Terminal, seront définies. Toute variable d’environnement que vous définissez dans votre fichier .bash_profile n’affectera que vos shells bash.

En général, je ne définit que des variables dans mon fichier .bash_profile et je ne change pas le fichier .plist (ou le fichier launchd sur Mavericks). La plupart des applications OS X fenêtrées ne nécessitent aucun environnement personnalisé. Je ne modifie le fichier environment.plist (ou le fichier launchd sur Mavericks) que lorsqu'une application a réellement besoin d'une variable d'environnement spécifique.

Il semble que ce que vous voulez, c'est modifier le fichier environment.plist, plutôt que le fichier .bash_profile.

Une dernière chose, si vous recherchez ces fichiers, je pense que vous ne les trouverez pas. Si je me souviens bien, ils n'étaient pas sur mon installation initiale de Lion.

Edit: Voici quelques instructions pour créer un fichier plist.

  1. Ouvrir Xcode
  2. Sélectionnez Fichier -> Nouveau -> Nouveau fichier ...
  3. Sous Mac OS X, sélectionnez Ressources.
  4. Choisissez un fichier de plist
  5. Suivez le reste des invites

Pour éditer le fichier, vous pouvez cliquer en maintenant la touche Contrôle enfoncée pour afficher un menu, puis sélectionner Ajouter une ligne. Vous pouvez ensuite ajouter une paire de valeurs de clé. Pour les variables d'environnement, la clé est le nom de la variable d'environnement et la valeur est la valeur réelle de cette variable d'environnement.

Une fois le fichier plist créé, vous pouvez l’ouvrir avec Xcode pour le modifier à tout moment.

397
David V

Votre .profile ou .bash_profile sont simplement des fichiers présents dans votre dossier "home". Si vous ouvrez une fenêtre du Finder et cliquez sur le nom de votre compte dans le volet Favoris, vous ne le verrez pas. Si vous ouvrez une fenêtre de terminal et tapez ls pour répertorier les fichiers, vous ne les verrez toujours pas. Cependant, vous pouvez les trouver en utilisant ls -a dans le terminal. Ou si vous ouvrez votre éditeur de texte préféré (par exemple, TextEdit, car il est fourni avec OS X) et faites Fichier-> Ouvrir, puis appuyez sur Command+Shift+. et cliquez sur le nom de votre compte (dossier personnel), vous les verrez également. Si vous ne les voyez pas, vous pouvez en créer un dans votre éditeur de texte préféré.

Maintenant, l'ajout de variables d'environnement est relativement simple et remarquablement similaire aux fenêtres. Dans votre .profile ajoutez simplement, un par ligne, le nom de la variable et sa valeur comme suit:

export Java_HOME=/Library/Java/Home
export JRE_HOME=/Library/Java/Home

etc.

Si vous modifiez votre variable "PATH", veillez à inclure le PATH par défaut du système qui a déjà été défini pour vous:

export PATH=$PATH:/path/to/my/stuff

Maintenant, voici la partie bizarre, vous pouvez soit ouvrir une nouvelle fenêtre de terminal pour que les nouvelles variables prennent effet, soit vous devrez taper .profile ou .bash_profile pour recharger le fichier et en appliquer le contenu. à l'environnement de votre terminal actuel.

Vous pouvez vérifier que vos modifications ont été appliquées à l'aide de la commande "set" de votre terminal. Tapez simplement set (ou set | more si vous préférez une liste paginée) et assurez-vous que ce que vous avez ajouté au fichier se trouve bien là.

En ce qui concerne l'ajout de variables d'environnement aux applications d'interface graphique, cela n'est normalement pas nécessaire et j'aimerais en savoir davantage sur ce que vous essayez spécifiquement de faire pour mieux vous donner une réponse.

219
tokkov

Voici quelques informations supplémentaires concernant spécifiquement la variable PATH dans Lion OS 10.7.x:

Si vous devez définir le PATH globalement, le PATH est créé par le système dans l'ordre suivant:

  1. Analyser le contenu du fichier /private/etc/paths, un chemin par ligne
  2. Analyser le contenu du dossier /private/etc/paths.d. Chaque fichier de ce dossier peut contenir plusieurs chemins, un chemin par ligne. L'ordre de chargement est déterminé d'abord par le nom du fichier, puis par l'ordre des lignes dans le fichier.
  3. Une instruction setenv PATH dans /private/etc/launchd.conf, qui ajoutera ce chemin vers le chemin déjà défini dans les no 1 et n ° 2 (vous ne devez pas utiliser $ PATH pour référencer la variable PATH a été construit jusqu'à présent). Mais définir le PATH ici est totalement inutile étant donné les deux autres options, bien que ce soit l'endroit où d'autres variables d'environnement globales peuvent être définies pour tous les utilisateurs.

Ces chemins et variables sont hérités par tous les utilisateurs et toutes les applications. Ils sont donc véritablement globaux - la déconnexion et l’entrée ne réinitialiseront pas ces chemins - ils sont conçus pour le système et sont créés avant que tout utilisateur ait la possibilité de se connecter, de sorte que les modifications apportées nécessitent un redémarrage du système pour prendre effet.

En passant, une nouvelle installation de OS 10.7.x Lion ne possède pas de environment.plist, ce qui peut fonctionner, mais peut également être obsolète.

76
jonphipps
echo $PATH

il imprime la valeur du chemin actuel

Ensuite, faites vim ~/.bash_profile et écrivez

export PATH=$PATH:/new/path/to/be/added

vous ajoutez ici à l'ancien chemin, conserve ainsi l'ancien et y ajoute votre nouveau chemin

alors fais

source ~/.bash_profile

cela va l'exécuter et ajouter le chemin

puis à nouveau vérifier avec

echo $PATH
50
learner_19

Malheureusement, aucune de ces réponses n'a résolu le problème spécifique que j'avais.

Voici une solution simple sans avoir à jouer avec bash. Dans mon cas, il fallait que gradle fonctionne (pour Android Studio).

Btw, Ces étapes concernent OSX (Mountain Lion 10.8.5)

  • Ouvrez le terminal.
  • Exécutez la commande suivante:

    Sudo nano /etc/paths (ou Sudo vim /etc/paths pour vim)

    nano

  • Allez au bas du fichier et entrez le chemin que vous souhaitez ajouter.
  • Appuyez sur control-x pour quitter.
  • Entrez "Y" pour enregistrer le tampon modifié.
  • Ouvrez une nouvelle fenêtre de terminal puis tapez:

    echo $PATH

Vous devriez voir le nouveau chemin ajouté à la fin du PATH

J'ai eu ces détails de ce post:

http://architectryan.com/2012/10/02/add-to-the-path-on-mac-os-x-mountain-lion/#.UkED3rxPp3Q

J'espère que cela peut aider quelqu'un d'autre

30
wired00

Explication simplifiée

Cet article/cette question est un peu ancien, je vais donc répondre à une version simplifiée pour les utilisateurs d'OS X Lion. Par défaut, OSX Lion ne contient aucun des fichiers suivants:

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profile

Tout au plus, si vous avez fait quelque chose dans le terminal, vous verrez peut-être ~/.bash_history

Ce que cela veut dire

Vous devez créer le fichier pour définir vos commandes bash par défaut (généralement dans ~/.bashrc). Pour ce faire, utilisez n'importe quel éditeur, bien qu'il soit plus simple de le faire dans le terminal:

  1. %> emacs .profile
  2. [de w/dans le type d'emacs:] source ~/.bashrc
  3. [depuis w/in emacs tapez:] Ctrl + x Ctrl + s (pour enregistrer le fichier)
  4. [à partir de/dans le type d'emacs:] _ Ctrl + x Ctrl + c (pour fermer emacs)
  5. %> emacs .bashrc
  6. [à partir de/dans emacs, tapez/collez toutes vos commandes bash, enregistrez et quittez]

La prochaine fois que vous quitterez et rechargerez le terminal, il devrait charger toutes vos préférences bash. Pour faire bonne mesure, il est généralement judicieux de séparer vos commandes en noms de fichiers utiles. Par exemple, depuis ~/.bashrc, vous devriez avoir un source ~/.bash_aliases et mettre toutes vos commandes d’alias dans ~/.bash_aliases.

23
vol7ron

Ce qui a fonctionné pour moi est de créer un .launchd.conf avec les variables dont j'avais besoin:

setenv FOO barbaz

Ce fichier est lu par launchd à la connexion. Vous pouvez ajouter une variable 'à la volée' au launchd en cours d'exécution en utilisant:

launchctl setenv FOO barbaz`

En fait, .launchd.cond contient simplement les commandes launchctl.

Les variables définies de cette manière semblent bien être présentes dans les applications à interface graphique.

Si vous essayez de définir vos variables LANG ou LC_ de cette manière et que vous utilisez iTerm2, veillez à désactiver le paramètre "Définir automatiquement les variables de paramètres régionaux" sous l'onglet Terminal du profil que vous utilisez. Cela semble écraser les variables d'environnement de launchd, et dans mon cas, il s'agissait de définir un problème LC_CTYPE endommagé, ce qui posait des problèmes sur les serveurs distants (la variable avait été transmise).

(Environment.plist semble toujours fonctionner sur mon Lion cependant. Vous pouvez utiliser la sous-fenêtre de préférences RCenvironment pour conserver le fichier au lieu de le modifier manuellement ou le Xcode requis. Cela semble toujours fonctionner sur Lion, bien que La dernière mise à jour date de l’époque Snow Leopard, c’est la méthode que je préfère personnellement.)

18
Gilimanjaro

Configurez votre variable d'environnement PATH sur Mac OS

Ouvrez le programme Terminal (celui-ci se trouve par défaut dans votre dossier Applications/Utilites). Lancer la commande suivante

touch ~/.bash_profile; open ~/.bash_profile

Cela ouvrira le fichier dans votre éditeur de texte par défaut.

Pour Android SDK à titre d'exemple:

Vous devez ajouter le chemin d'accès à votre répertoire _ outils de plate-forme et d'outils de SDK Android. Dans mon exemple, j'utiliserai "/ Development/Android-sdk-macosx" comme répertoire d'installation du SDK. Ajoutez la ligne suivante:

export PATH=${PATH}:/Development/Android-sdk-macosx/platform-tools:/Development/Android-sdk-macosx/tools

Enregistrez le fichier et quittez l'éditeur de texte. Exécutez votre .bash_profile pour mettre à jour votre PATH.

source ~/.bash_profile

Maintenant, chaque fois que vous ouvrez le programme Terminal, PATH inclura le Android SDK.

14
Charaf JRA

Ajout de variables de chemin à OS X Lion

C'était assez simple et a fonctionné pour moi, dans le terminal:

$echo "export PATH=$PATH:/path/to/whatever" >> .bash_profile #replace "/path/to/whatever" with the location of what you want to add to your bash profile, i.e: $ echo "export PATH=$PATH:/usr/local/Cellar/nginx/1.0.12/sbin" >> .bash_profile 
$. .bash_profile #restart your bash Shell

Une réponse similaire était ici: http://www.mac-forums.com/forums/os-x-operating-system/255324-problems-setting-path-variable-lion.html#post1317516

11
Yaw Joseph Etse

Terminal ouvert:

vi ~/.bash_profile

Appliquer le changement au système (pas besoin de redémarrer l'ordinateur):

source ~/.bash_profile

(Fonctionne également avec macOS Sierra 10.12.1)

7
D Vy

Permettez-moi de vous illustrer mon exemple personnel de manière très redondante.

  1. Après avoir installé JDK, assurez-vous qu’il est bien installé. enter image description here
  2. Parfois, macOS ou Linux configure automatiquement une variable d’environnement différente de Windows. Mais ce n'est pas toujours le cas. Alors vérifions-le. enter image description here La ligne immédiatement après echo $ Java_HOME serait vide si la variable d’environnement n’était pas définie. Il doit être vide dans votre cas.

  3. Maintenant, nous devons vérifier si nous avons un fichier bash_profile. enter image description here Vous avez vu que dans mon cas, nous avons déjà bash_profile. Sinon, nous devons créer un fichier bash_profile.

  4. Créez un fichier bash_profile. enter image description here

  5. Vérifiez à nouveau que le fichier bash_profile est présent. enter image description here

  6. Maintenant ouvrons le fichier bash_profile. macOS l'ouvre à l'aide de son programme TextEdit par défaut. enter image description here

  7. C'est le fichier où les variables d'environnement sont conservées. Si vous avez ouvert un nouveau fichier bash_profile, il doit être vide. Dans mon cas, il était déjà configuré pour le langage de programmation python et la distribution Anaconda. Maintenant, j’ai besoin d’ajouter une variable d’environnement pour Java qui ne fait qu’ajouter la première ligne. VOUS DEVEZ Taper la première ligne VERBATIM. Juste la première ligne. Enregistrez et fermez TextEdit. Puis fermez le terminal. enter image description here

  8. Ouvrez à nouveau le terminal. Vérifions si la variable d'environnement est configurée. enter image description here

5
Sumit Pokhrel

J'ai eu un problème avec Eclipse (démarré en tant qu'interface graphique, pas à partir d'un script) sur Maverics parce qu'il ne prenait pas PATH personnalisé. J'ai essayé toutes les méthodes mentionnées ci-dessus en vain. Enfin, j'ai trouvé la réponse la plus simple, basée sur des astuces de ici :

  1. Allez dans le dossier /Applications/Eclipse/Eclipse.app/Contents .

  2. Editez le fichier Info.plist avec l'éditeur de texte (ou XCode), ajoutez le dictionnaire LSEnvironment pour la variable d'environnement avec le chemin complet . Notez qu'il inclut également/usr/bin, etc.:

    <dict>
      <key>LSEnvironment</key>
      <dict>
            <key>PATH</key>
            <string>/usr/bin:/bin:/usr/sbin:/sbin:/dev/Android-ndk-r9b</string>
      </dict>
      <key>CFBundleDisplayName</key>
      <string>Eclipse</string>
      ...
    
  3. Recharger les paramètres pour l'application avec

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.fra‌​mework/Support/lsregister -v -f /Applications/Eclipse/Eclipse.app
    
  4. Redémarrer Eclipse

5
JaakL

J'ai pris la route d'idiot. Ajoutés à la fin de/etc/profile

for environment in `find /etc/environments.d -type f`
do
     . $environment
done

a créé un dossier/etc /virvenus, y a créé un fichier appelé "Oracle" ou "peu importe" et y a ajouté les éléments dont j'avais besoin.

/ etc $ cat /etc/environments.d/Oracle

export PATH=$PATH:/Library/Oracle/instantclient_11_2
export DYLD_LIBRARY_PATH=/Library/Oracle/instantclient_11_2
export SQLPATH=/Library/Oracle/instantclient_11_2
export PATH=$PATH:/Library/Oracle/instantclient_11_2
export TNS_ADMIN=/Library/Oracle/instantclient_11_2/network/admin
4
Rob in Katy

Plus de détails, qui pourraient peut-être être utiles à quelqu'un:

Grâce à mes propres explorations, je sais maintenant comment définir les variables d'environnement de 7 manières sur 8. J'essayais de créer un environnement pour une application que je développe sous Xcode. Je règle les envars "traceurs" en utilisant ces différentes méthodes pour me dire lesquelles entrent dans le champ de mon application. Dans la liste ci-dessous, vous pouvez voir que la modification du "schéma" dans Xcode pour ajouter des arguments fonctionne de la même manière que "putenv". Ce qui ne l’a pas défini dans cette étendue: ~/.MACOS/environment.plist, plist spécifique à l’application, .profile et l’ajout d’une phase de construction pour exécuter un script personnalisé (j’ai trouvé un autre moyen de définir Xcode dans Xcode [au moins]]. mais j’ai oublié ce que j’appelais le traceur et je ne le trouve pas maintenant; c’est peut-être sur une autre machine ....)

GPU_DUMP_DEVICE_KERNEL est égal à 3

GPU_DUMP_TRK_ENVPLIST est (null)

GPU_DUMP_TRK_APPPLIST est (null)

GPU_DUMP_TRK_DOTPROFILE est (null)

GPU_DUMP_TRK_RUNSCRIPT est (null)

GPU_DUMP_TRK_SCHARGS est 1

GPU_DUMP_TRK_PUTENV est 1

... D'autre part, si j'entre dans Terminal et que je dis "set", il semble que le seul élément obtenu est celui de .profile (j'aurais pensé que cela capterait environment.plist également, et je suis Bien sûr, une fois que j’ai vu un deuxième envar de traceur dans Terminal, quelque chose a probablement disparu depuis. Longue journée ...)

1
Photovore

Étape 1: ouvrez ~/.bash_profile

Maintenant, un éditeur de texte s'ouvre:

Étape 2: le nom de la variable doit être en majuscule. dans cet exemple, la variable est NODE_ENV

Étape 3: export NODE_ENV=development

Enregistrez-le et fermez-le.

Redémarrez votre système.

Terminé.

Pour vérifier la variable env: ouvrez le terminal et tapez

echo $NODE_ENV 
0
Navya