Je ne peux pas croire qu'il n'y ait pas de tutoriels à ce sujet après la recherche sur Google. Quelqu'un peut-il m'indiquer une direction ou expliquer ce que ces lignes et variables signifient dans .profile sur mac? Comment peut-on les configurer?
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
export PATH=$PATH:/usr/local/mysql/bin
#export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
#export PATH=/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:/Applications/MAMP/htdocs/cake/cake/console:/opt/local/bin:/opt/local/sbin:$PATH
export PATH=/Android-sdks/platform-tools:~/Android-sdks/tools:$PATH
export PATH=/Users/Android-sdks/platform-tools:/Users/Android-sdks/tools:$PATH
Toute ligne commençant par #
est un commentaire. PATH=
définit la valeur de la variable PATH
, $ PATH se développe à la valeur actuelle et export
au début rend la valeur disponible pour les programmes que vous exécutez à partir du terminal.
Supposons que la valeur initiale de PATH soit /usr/bin:/bin
.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Remplacer $PATH
avec la valeur précédente de $ PATH. Donc, ce qui précède définit PATH
sur
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin
Avancer,
export PATH=$PATH:/usr/local/mysql/bin
Encore une fois, remplacez $ PATH par la valeur précédente:
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
Après
export PATH=/Android-sdks/platform-tools:~/Android-sdks/tools:$PATH
on a
/Android-sdks/platform-tools:~/Android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
(Le ~
est un jeton spécial qui sera remplacé par le chemin d'accès à votre répertoire personnel, mais vous devriez obtenir l'image.)
Et enfin, après
export PATH=/Users/Android-sdks/platform-tools:/Users/Android-sdks/tools:$PATH
on a
/Users/Android-sdks/platform-tools:/Users/Android-sdks/tools:/Android-sdks/platform-tools:~/Android-sdks/tools:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/local/mysql/bin
PATH
est utilisé pour rechercher les commandes que vous entrez sur la ligne de commande. Donc, si vous tapez foo
, le Shell recherchera les noms ci-dessous, dans l'ordre spécifié:
/Users/Android-sdks/platform-tools/foo
/Users/Android-sdks/tools/foo
/Android-sdks/platform-tools/foo
~/Android-sdks/tools/foo
/opt/local/bin/foo
/opt/local/sbin/foo
/usr/bin/foo
/bin/foo
/usr/local/mysql/bin/foo
Pour voir la valeur actuelle de PATH, exécutez
echo $PATH
Devez-vous ajouter de nouveaux répertoires au début de PATH
, ou à la fin? Ce n'est pas toujours important, mais parfois c'est le cas. Cela dépend des emplacements que vous souhaitez que le système vérifie en premier.
Vous devez ajouter au début si le but est de rechercher d'autres répertoires avant de chercher dans les répertoires par défaut. Par exemple, git
est un utilitaire utilisé pour gérer le code source. Si je voulais installer une version plus récente de git
dans ~/git et utiliser that par défaut, je ferais:
export PATH=~/git/bin:$PATH
Cela signifie que ~/git/bin/git remplacerait/opt/local/bin/git.
D'un autre côté, je préférerais peut-être que l'administrateur installe git
à l'échelle du système. Si je veux utiliser ma copie locale niquement jusqu'à ce que l'administrateur la rende disponible pour tout le monde, alors cela a plus de sens:
export PATH=$PATH:~/git/bin
Dans ce cas ~/git/bin/git
ne serait utilisé que si /opt/local/bin/git
n'existait pas déjà depuis /opt/local/bin
est plus tôt dans le chemin.
De nombreuses commandes n'existeront pas à plus d'un endroit. Par exemple, vous pourriez écrire my-backup-script
et le mettre sur une Apple Time Capsule à /Volumes/Capsule/scripts
. Il est peu probable qu'il y ait une commande appelée my-backup-script
dans tout autre endroit en conflit. Ainsi, l'une des commandes suivantes vous permet de taper my-backup-script
et exécutez le bon script:
export PATH=/Volumes/Capsule/scripts:$PATH
ou
export PATH=$PATH:/Volumes/Capsule/scripts
Est-ce mieux? Mon conseil serait de faire ce dernier. N'oubliez pas que le système devra rechercher les répertoires dans $PATH
, dans l'ordre, pour chaque commande qu'il doit trouver. La plupart des commandes seront sur le système local, il est donc plus judicieux de mettre un stockage réseau plus lent à la fin du chemin.
Depuis la page man
, export
définit simplement une variable d'environnement.
La variable d'environnement PATH
indique à votre Mac où chercher les commandes que vous tapez sur la ligne de commande, dans l'ordre où elles doivent apparaître. Il s'agit d'une liste de chemins, délimités par deux points.
La valeur $PATH
est la valeur actuelle de la variable d'environnement PATH
.
Ainsi, une ligne comme
export PATH=/foo:$PATH
précède /foo
au PATH
et
export PATH=$PATH:/foo
ajoute /foo
au PATH
Exécutez man
Et puis répondez à la question par export
Vous pouvez voir la valeur PATH
actuelle et observer qu'il y a plus d'un chemin d'accès présent.
(Le mien était /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
)
Observe ceci :
représente la fin d'un seul chemin.
Vous pouvez récupérer cela en utilisant $PATH
Maintenant, lorsque vous souhaitez ajouter un chemin supplémentaire à cette liste, vous devez ajouter le chemin actuel au nouveau chemin comme /newPath:$PATH
ou $PATH:/newPath
.
Et enfin, pour l'enregistrer, vous devez utiliser export PATH=$PATH:/newPath
.
Remarque: Cette réponse s'adresse aux développeurs novices.