Comment réinitialiser la variable $ PATH sur Mac OS X?

17

J'ai foiré ma variable de chemin, et maintenant certaines applications que j'exécute génèrent des erreurs disant Commande non trouvée (erreur 127) pour des commandes comme la date et le sommeil . Ces commandes fonctionnent correctement lorsqu'elles sont exécutées directement dans le shell.

Je suppose que cela a quelque chose à voir avec une variable $ PATH malformée, et que je dois savoir comment la réinitialiser. J'ai supprimé les fichiers ~ / .bashrc , ~ / .bash_profile , /etc/bash.bashrc et ~ / .bashrc et ~ / .profile .

Quels autres fichiers pourraient contenir mon $ PATH ? Existe-t-il un moyen plus simple de réinitialiser le chemin d'accès que de fouiller dans la myriade de fichiers qui pourraient contenir mon chemin d'accès?

Notez que ce problème de chemin ne concerne que mon utilisateur. J'ai fait un utilisateur de test sur mon système, et le chemin était bien, de retour à la normale.

MISE À JOUR: Merci. Je ne sais pas lequel des fichiers que j'ai supprimés l'a fait, mais les choses fonctionnent à nouveau. Vous avez fait ce que les «experts» ne pouvaient pas faire. Et oui, Chris, tu avais raison. Les personnalisations de CHEMIN que j'avais faites étaient dans bash_login. Mais cela a fonctionné sans que je supprime ces personnalisations. Je pense que c'était peut-être parce que j'utilisais ce préfiltre appelé 'RCEnvironment', et j'avais entré un chemin avec des guillemets et: PATH dedans. Je ne sais pas si cela prend des guillemets, et il ne remplace pas: $ PATH, donc c'est probablement la racine de l'erreur. J'oubliais que j'avais même cette prépane!

Neil
la source
1
/ etc / profile est l'endroit le plus probable pour les valeurs initiales des paramètres de PATH, mais quelque chose là-bas affecterait tous les utilisateurs. Il y a aussi ~ / .bash_login, que vous n'avez pas répertorié (bien que vous l'ayez peut-être déjà éliminé).
Chris Johnsen

Réponses:

19

Si vous avez un fichier ~ / .MacOSX / environment.plist, vérifiez-le pour voir s'il fournit une valeur PATH par défaut.

S'il est au format XML (les listes peuvent être dans de nombreux formats), vous pouvez le modifier avec n'importe quel éditeur de texte. Vérifiez-le plutil -lint ~/.MacOSX/environment.plistsi vous le modifiez à la main.

Ou, vous pouvez utiliser des commandes comme les valeurs par défaut ou PlistBuddy pour apporter des modifications contrôlées aux fichiers plist au format XML ou binaire.


Vous pouvez toujours définir votre propre CHEMIN dans l'un des fichiers d'initialisation de votre shell.

Mettez quelque chose comme ceci dans vos fichiers de démarrage de votre shell ( .bashrc, ou .bash_profile/ .bash_login/ .profile):

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

# add custom, local installations to PATH
PATH=/usr/local/bin:/usr/local/sbin:"$PATH"

# add MacPorts to PATH
PATH=/opt/local/bin:/opt/local/sbin:"$PATH"

Cela remplacera le chemin par défaut défini au démarrage du shell (le premier PATH=ne l'utilise pas $PATH, donc il commencera toujours avec tout ce que vous lui donnerez).

Un seul des fichiers « login » sera jamais utilisé (la première qui existe et est lisible ~/.bash_profile, ~/.bash_loginet ~/.profilesera utilisé). .profileest pour la compatibilité descendante avec d'autres shells - si vous l'utilisez, assurez-vous de le garder exempt de syntaxe spécifique à bash . Si vous allez avec .bash_loginou .bash_profile(ils sont fonctionnellement équivalents à l'exception des noms), utilisez une ligne comme [[ -e ~/.bashrc -a -r ~/.bashrc ]] && source ~/.bashrc ]]près du haut pour que les shells de connexion obtiennent également les personnalisations faites dans votre .bashrc.

Si vous voulez que toutes les instances de bash aient le même CHEMIN, utilisez alors .bashrc. Si vous vous trouvez souvent en train de modifier de manière interactive le PATH d'un seul shell à partir de la ligne de commande et que vous souhaitez utiliser ce PATH modifié dans des sous-shell (un cas qui n'est probablement pas terriblement courant), vous devez plutôt mettre les instructions dans l'un des fichiers de connexion à la place. . Choisissez un seul des fichiers de connexion et utilisez-le.

Chris Johnsen
la source
8

1.Ouvrez votre terminal

2.Vous pouvez tout d'abord vérifier votre courant $PATH, tapez

echo $ PATH

au terminal

3.Si le $PATHterminal que vous avez rendu est le chemin que vous voulez, alors vous êtes bon; sinon, tapez

export PATH = / usr / bin: / bin: / usr / sbin: / sbin

, puis tapez

touchez ~ / .bash_profile

, puis tapez

ouvrir ~ / .bash_profile

, vous trouverez alors un EditText ouvert, tapez maintenant le chemin que vous voulez dans ce EditText; Par exemple, tapez

CHEMIN = / usr / bin: / bin: / usr / sbin: / sbin

(qui est la valeur $PATHpar défaut pour mac, étant donné que vous souhaitez réinitialiser le $PATHdonc vous devriez probablement le taper), enregistrez-le, puis fermez EditText, puis fermez Terminal.

4.Maintenant, vous avez déjà changé votre $PATHou réinitialisé à la valeur par défaut du mac $PATH!

rObOtAndChalie
la source
2
Je pense qu'il y a beaucoup de choses au-dessus qui n'ont aucun effet. Pourquoi pensez-vous que touchc'est nécessaire? De plus, comme vous fermez Terminal de toute façon, pourquoi exécuter le exportsur la ligne de commande, plutôt que de simplement l'ajouter à ~/.bash_profile(ce qui doit exportaussi) et d'en finir? (Sinon, exécutez source ~/.bash_profilepour appliquer les modifications à la fenêtre actuelle.)
Arjan
Certes, certains d'entre eux sont redondants. La sauvegarde de la valeur PATH dans .bash_profile devrait suffire.
ThinkCode
1

Les rc/profilemodifications de Chris Johnson présentées fonctionnent également bien /etc/profile.

Je viens d'ajouter:

export PATH="/usr/local/mariadb/bin:$PATH"

à mon /etc/profilefichier dans Mac OS X 10.9 Mavericks pour terminer l'installation de MariaDB (qui fonctionne comme un excellent remplacement pour MySQL).

zigmoo
la source