545 votes

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

Lorsque quelqu'un dit "éditez votre fichier .plist" ou "votre .profile" ou ".bash_profile" etc, cela me perturbe. Je n'ai aucune idée de l'endroit où se trouvent ces fichiers, de la façon de les créer si je dois le faire, etc., et aussi de la raison pour laquelle il semble y avoir tant de fichiers différents (pourquoi ? font-ils des choses différentes ?).

Quelqu'un pourrait-il donc expliquer très patiemment à un ancien utilisateur de Windows (qui souhaite désespérément se familiariser avec le monde agréable, bien que quelque peu déroutant, d'OS X) comment procéder, étape par étape ?

J'ai besoin que les variables soient définies à la fois pour les applications GUI et les applications en ligne de commande, et pour le moment c'est pour un ant script qui a besoin des variables, mais il y aura très probablement d'autres besoins également.

Veuillez noter que j'ai également Lion, car de nombreuses réponses que vous obtenez sur Google semblent être dépassées pour Lion...

Notez également que je n'ai pratiquement aucune expérience de l'utilisation du terminal. Je suis prêt à apprendre, mais veuillez expliquer pour un novice...

0 votes

Aucune des réponses ne fonctionnera si vous essayez de les lire à partir d'une application comme Spring.

406voto

David V Points 4950

Tout d'abord, une chose à reconnaître à propos d'OS X est qu'il est construit sur Unix. C'est là que le fichier .bash_profile entre en jeu. Lorsque vous lancez l'application Terminal dans OS X, vous obtenez un shell bash par défaut. Le shell bash provient d'Unix et lorsqu'il se charge, il exécute le .bash_profile script. Vous pouvez modifier ce script pour votre utilisateur afin de changer vos paramètres. Ce fichier est situé à :

~/.bash_profile

Mise à jour pour Mavericks

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

Lion et Mountain Lion uniquement

Les applications fenêtrées OS X reçoivent des variables d'environnement à partir de votre fichier environment.plist. C'est probablement ce que vous entendez par le fichier ".plist". Ce fichier est situé à l'adresse suivante

~/.MacOSX/environment.plist

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

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

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 cherchez ces fichiers, je pense que vous ne les trouverez pas. Si je me souviens bien, ils ne figuraient pas dans mon installation initiale de Lion.

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

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

Pour éditer le fichier, vous pouvez Control-cliquer pour obtenir un menu et sélectionner Add Row. Vous pouvez alors ajouter une paire clé-valeur. 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 quand vous le souhaitez.

0 votes

Ok, merci. Je pense avoir compris que le tilde désigne mon dossier personnel, n'est-ce pas (c'est-à-dire /Users/Anders dans mon cas) ? Donc, s'ils n'existent pas, je devrais créer un nouveau fichier texte vide, avec les noms que vous avez mentionnés (serai-je autorisé à créer un fichier qui commence par un point ?)? Et ensuite ajouter quoi dans ces fichiers pour définir une variable d'environnement ? Par exemple, j'ai besoin d'ajouter une variable AHF_OPT qui doit pointer vers un dossier nécessaire à une fourmi script, comment puis-je ajouter cela dans ces deux fichiers ?

0 votes

Oui, le tilde est votre répertoire personnel. Avez-vous installé Xcode ? C'est la seule application que je connaisse pour créer et éditer des fichiers plist.

0 votes

J'ai ajouté quelques instructions pour éditer un fichier plist avec Xcode. Si vous n'avez pas Xcode, vous pouvez trouver un fichier plist existant et le modifier dans n'importe quel éditeur de texte. C'est assez simple.

227voto

tokkov Points 1199

Votre .profile ou .bash_profile sont simplement des fichiers qui se trouvent dans votre dossier "maison". Si vous ouvrez une fenêtre du Finder et que vous cliquez sur le nom de votre compte dans le volet des Favoris, vous ne les verrez pas. Si vous ouvrez une fenêtre du Terminal et tapez ls pour lister 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é (disons TextEdit puisqu'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é.

L'ajout de variables d'environnement est relativement simple et remarquablement similaire au concept de Windows. Dans votre .profile il suffit d'ajouter, 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

Vous pouvez soit ouvrir une nouvelle fenêtre de terminal pour que les nouvelles variables prennent effet, soit taper les mots suivants .profile ou .bash_profile pour recharger le fichier et faire en sorte que son contenu soit appliqué à l'environnement de votre terminal actuel.

Vous pouvez vérifier que vos changements ont pris effet en utilisant la commande "set" dans 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 s'y trouve.

Quant à l'ajout de variables d'environnement aux applications GUI, ce n'est normalement pas nécessaire et j'aimerais en savoir plus sur ce que vous essayez de faire spécifiquement pour mieux vous répondre.

2 votes

Merci, je n'ai pas bien compris la dernière partie, je dois soit ouvrir une fenêtre de Terminal pour les définir, soit taper .profile ? Mais ne devrais-je pas ouvrir une fenêtre de Terminal pour taper .profile ? Et s'ils sont automatiquement configurés par l'ouverture d'une fenêtre de terminal, alors pourquoi dois-je taper cela... ? Et quand j'en ouvrirai une, seront-elles définitivement définies ? Je vous ai probablement mal compris, car même ma question n'a aucun sens pour moi...

5 votes

Si vous avez une fenêtre de terminal ouverte avant de modifier votre profil, ces modifications ne seront pas reflétées dans l'environnement du terminal existant. La solution rapide consiste à ouvrir une nouvelle fenêtre de terminal. C'est tout. Chaque nouvelle fenêtre aura tout ce qui se trouve dans le profil .set. Toujours. La façon de réparer les anciennes fenêtres déjà ouvertes est de taper ". .profile" avec deux points et un espace entre eux. La commande "set" sert à définir des variables d'environnement qui disparaissent lorsque vous mettez fin à la session dans laquelle elles ont été définies. L'utilisation de la commande "set" sans argument liste les variables actuellement définies.

1 votes

Ahhh, je vois la confusion que j'ai créée. Si vous n'aviez pas de fenêtre de terminal ouverte, alors chaque nouvelle fenêtre chargera le .profile lorsqu'elle sera ouverte et vous n'aurez rien à faire. Si par contre vous avez édité le .profile dans votre fenêtre de terminal ou si vous aviez des fenêtres de terminal ouvertes auparavant et que vous vouliez y apporter des modifications, alors vous devez simplement taper . .profile pour les charger.

77voto

jonphipps Points 571

Voici un peu plus d'informations concernant spécifiquement la variable PATH dans l'OS Lion 10.7.x :

Si vous devez définir le PATH de manière globale, le PATH est construit par le système dans l'ordre suivant :

  1. Analyse du contenu du fichier /private/etc/paths un chemin par ligne
  2. Analyse du 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 du fichier.
  3. A setenv PATH déclaration dans /private/etc/launchd.conf ce qui permettra ajouter ce chemin au chemin déjà construit en #1 et #2 (vous ne devez pas utiliser $PATH pour référencer la variable PATH qui a été construite jusqu'à présent). Mais, définir le PATH ici est complètement inutile étant donné les deux autres options, bien que ce soit l'endroit où les 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 réellement globaux - se déconnecter et se reconnecter ne réinitialisera pas ces chemins - ils sont construits pour le système et sont créés avant qu'un utilisateur n'ait la possibilité de se connecter, les modifications apportées à ces chemins nécessitent donc un redémarrage du système pour prendre effet.

BTW, une installation propre du système d'exploitation 10.7.x Lion n'a pas de problème de sécurité. environment.plist que je peux trouver, donc cela peut fonctionner mais peut aussi être déprécié.

1 votes

Oui, merci beaucoup ! C'est un peu plus compliqué qu'un simple .profile.

2 votes

Si vous utilisez la méthode paths.d et que vous avez un chemin qui contient des dossiers contenant des espaces, laissez-les simplement non encodés. Si vous essayez de les encoder (ce qui est une pratique courante, je pense ?), cela ne fonctionne pas (du moins pour moi). J'ai lu ceci ici : sweeting.org/mark/blog/2008/05/26/ (recherchez "espaces"). J'espère que cela aidera les autres !

1 votes

@MichaelTrouw Votre commentaire m'a beaucoup aidé ! J'ajoutais des échappatoires pour les espaces, mais ce n'était pas nécessaire ! Je suis sur Mac OS 10.9.2

57voto

learner_19 Points 289
echo $PATH

il imprime la valeur du chemin actuel

Ensuite, faites vim ~/.bash_profile et écrire

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

Ici, vous ajoutez le chemin à l'ancien chemin, ce qui préserve l'ancien chemin et y ajoute le nouveau chemin.

alors faire

source ~/.bash_profile

ceci l'exécutera et ajoutera le chemin

puis vérifiez à nouveau avec

echo $PATH

2 votes

La commande "vim" devrait être vim ~/.bash_profile J'ai essayé d'éditer le post mais SO me dit que les éditions doivent faire 6 caractères :/

23voto

vol7ron Points 11270

Explication simplifiée

Cette question est un peu ancienne, je vais donc répondre à une version simplifiée pour les utilisateurs d'OS X Lion. Par défaut, OSX Lion ne possède aucun des fichiers suivants :

  • ~/.bashrc
  • ~/.bash_profile
  • ~/.profil

Tout au plus, si vous avez fait quoi que ce soit dans le terminal, vous pourriez voir ~/.bash_history

Ce que cela signifie

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 type d'éditeur, bien qu'il soit plus simple de le faire dans le terminal :

  1. %> emacs .profile
  2. [de w/in emacs tapez :] source ~/.bashrc
  3. [de w/in emacs tapez :] Ctrl + x Ctrl + s (pour sauvegarder le fichier)
  4. [de w/in emacs tapez :] Ctrl + x Ctrl + c (pour fermer emacs)
  5. %> emacs .bashrc
  6. [depuis w/in emacs tapez/collez toutes vos commandes bash, sauvegardez et quittez]

La prochaine fois que vous quittez et rechargez le terminal, il devrait charger toutes vos préférences bash. Pour faire bonne mesure, c'est généralement une bonne idée de séparer vos commandes en noms de fichiers utiles. Par exemple, dans ~/.bashrc, vous devriez avoir un fichier source ~/.bash_aliases et mettez toutes vos commandes d'alias dans ~/.bash_aliases.

0 votes

Pourquoi l'ont-ils supprimé, d'ailleurs ?

0 votes

@Pacerier Je ne suis pas sûr qu'ils l'aient supprimé, mais sans personnalisation, ces fichiers ne sont pas nécessaires. Le problème est que pour toute personne nouvellement familiarisée avec le terminal/shell, OSX ou BSD, ces fichiers ne sont pas évidents et donc plus difficiles à apprendre.

0 votes

Alors par quoi l'ont-ils remplacé ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X