4 votes

Les exécutables de /bin et /usr/bin ne sont pas trouvés dans le chemin d'accès.

D'une manière ou d'une autre, je ne peux pas exécuter les fichiers dans /bin o /usr/bin sans fournir le chemin d'accès complet.

Cela ne se produit pas lorsque l'exécution se fait à partir du Terminal, mais, par exemple, iTerm ne peut pas exécuter bash (seulement /bin/bash ), OnyX ne peut pas exécuter sw_vers .

.profile: export PATH=/opt/local/bin:/opt/local/sbin:/bin:/usr/bin:$PATH 
.profile: export PATH=$PATH 
.bash_history: export PATH="$PATH:"'/Users/gilstrauss/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin' 
.bash_history: export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
.bash_history: export PATH=${PATH}:/bin 
.bash_profile: export PATH=/bin:$PATH 
.bashrc: export PATH=${PATH}:/bin:/usr/bin

2 votes

Que renvoie cette commande ? grep PATH= .profile .bash* ?

0 votes

.profile:export PATH=/opt/local/bin:/opt/local/sbin:/bin:/usr/bin:$PATH .profile:export PATH=$PATH .bash_history:export PATH="$PATH:"'/Users/gilstrauss/Applications/CrossOver.app/C‌​ontents/SharedSuppor‌​t/CrossOver/bin' .bash_history:export PATH=/opt/local/bin:/opt/local/sbin:$PATH .bash_history:export PATH=${PATH}:/bin .bash_profile:export PATH=/bin:$PATH .bashrc:export PATH=${PATH}:/bin:/usr/bin

0 votes

@user49204 - montrez cette information en éditant la question - et lorsque vous l'enregistrez, vérifiez que le formatage la rend compréhensible.

3voto

Ryan Spears Points 1524

Terminal.app démarrer correctement le shell ne signifie pas grand chose : il exécute /usr/bin/login (avec le chemin d'accès complet) par défaut, qui invoque votre interpréteur de commandes par défaut (encore une fois : défini avec un chemin d'accès complet) en tant qu'un shell de connexion interactif (qui à son tour lira les deux .profile y .bashrc et vous laisser avec un travail $PATH ). Votre problème est le suivant les coquilles non interactives qui ne font ni l'un ni l'autre, n'obtiennent aucun $PATH paramètres. Cela semble indiquer que les paramètres de chemin d'accès par défaut d'OS X ont été modifiés d'une manière ou d'une autre.

Pour vérifier cela, exécutez cat /etc/paths . Le résultat devrait être (au minimum)

/usr/bin
/bin
/usr/sbin
/sbin

(ce sont les valeurs par défaut sur une installation OS X vierge). Si les deux premiers sont manquants, vous avez votre cause - et une solution facile :

mv /etc/paths /etc/paths.old # if you want to keep the current contents
def_paths=(/usr/bin /bin /usr/sbin /sbin)
for p in ${def_paths[@]}; do echo $p >> /etc/paths; done
cat /etc/paths.old >> /etc/paths # append previous contents

Notez que lorsque /etc/paths est détenu par root vous devrez sudo su pour que cela fonctionne.

1voto

Aaron Lake Points 3622

Je ne sais pas comment c'est arrivé mais votre PATH s'est détraqué, heureusement c'est une réparation facile. Exécutez ce qui suit dans Terminal (ou iTerm) pour résoudre le problème :

echo "export PATH=$PATH:/bin:/usr/bin" >> ~/.bashrc
source ~/.bashrc

Cela ajoutera /bin y /usr/bin à la fin de votre PATH pour cette session et toutes les sessions futures du terminal.

0 votes

Merci, mais cela ne semble pas résoudre le problème. Je ne vois pas ce problème dans un terminal mais seulement lorsque des applications tierces essaient d'invoquer des exécutables d'accès sous /bin ou /usr/bin.

0 votes

Pouvez-vous me donner un exemple de tiers essayant d'accéder à ces binaires ?

0 votes

Oui, iTerm2 n'exécute pas bash mais seulement /bin/bash. Vous ne voyez pas ce comportement lorsque vous exécutez bash à partir du terminal.

1voto

chiggsy Points 2899

Dans OS X, c'est launchd qui définit le chemin initial pour tout, et non vos fichiers de terminal.

Maintenant, sur une note sans rapport, je viens de découvrir que dans OS X

ps -E 

montrera l'environnement qui a été donné au processus. Je suis sûr que tout le monde le savait, sauf moi, mais je suis très excité ! Pourquoi ?

Parce que maintenant je peux fournir une réponse partielle.

ps -EA

Vous montrera l'environnement dans lequel chaque processus a démarré, que ce processus ait un terminal de contrôle ou non. Vous devriez voir

/usr/bin:/bin:/usr/sbin:/sbin

Ce qui est aussi ce que vous devriez obtenir lorsque vous tapez dans

/bin/launchctl getenv PATH

puisque launchd définit le chemin. C'est ici que se situe votre problème, je pense, et non dans vos dotfiles. Vous trouverez peut-être que la lecture de la page de manuel de environ(7) ainsi que path_helper(8) utile. Lorsque le système fonctionne correctement, chaque application que vous exécutez devrait avoir le même environnement que celui qui lui est donné par launchd. Le fait qu'Onyx fonctionne mal signifie que ce n'est pas un problème de shell, mais plutôt un problème de système.

Il est très important que launchctl/launchd définisse le chemin correctement.

1 votes

Merci beaucoup. Il est intéressant de voir que mon processus terminal Bash a été lancé avec un simple chemin 'PATH=/usr/bin:/bin'. Mon '/bin/launchctl getenv PATH' ne renvoie rien sur Yosemite.

0 votes

Cela signifie que votre chemin d'accès est défini par login(1). "La séquence de répertoires, séparés par des deux-points, recherchée par csh(1), sh(1), system(3), execvp(3), etc, lors de la recherche d'un fichier exécutable. PATH est fixé à ``/usr/bin:/bin'' initialement par login(1)."

0voto

Sheehan Alam Points 13754

Avez-vous un .bash_profile ? dans le mien

$ cat bash_profile 

source ~/.bashrc
export PATH=$PATH:/opt/local/bin:/opt/local/sbin

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/julia:/usr/local/MacGPG2/bin:/usr/texbin:/opt/local/bin:/opt/local/sbin

(pour les macports vers le chemin). Il est logique que vous puissiez simplement avoir dans le fichier .bash_profile la ligne suivante

export PATH=$PATH:/bin:/usr/bin

Et voir comment ça se passe. À mon avis, vous avez dû faire quelque chose de très grave à votre machine, alors faites une sauvegarde de vos fichiers et testez le bon fonctionnement du logiciel et du matériel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X