0 votes

La voie n'est pas respectée ?

J'ai ce qui suit dans mon _.bash_profile_ :

$ cat ~/.bash_profile 
# Prompt
export PS1="\h:\W$ "

# Standard path
export PATH="/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:
/opt/local/bin:/opt/local/sbin"

# Android
export ANDROID_NDK_ROOT=/opt/android-ndk
export ANDROID_SDK_ROOT=/opt/android-sdk
export JAVA_HOME=`/usr/libexec/java_home`
export ANDROID_HOME="$HOME/.android"

export PATH="$PATH:$ANDROID_SDK_ROOT/tools/":"$ANDROID_SDK_ROOT/platform-tools/"

J'ai vérifié le chemin avec :

$ echo $PATH
/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/opt/local/bin:
/opt/local/sbin:/opt/android-sdk/tools/:/opt/android-sdk/platform-tools/

Ma version locale d'Emacs se trouve dans /usr/local/bin . Je viens de le construire et de l'installer :

$ which emacs
/usr/local/bin/emacs

Lorsque je lance Emacs, j'obtiens celui de /usr/bin :

$ emacs --version
GNU Emacs 22.1.1
...
$ /usr/bin/emacs --version
GNU Emacs 22.1.1
...
$ /usr/local/bin/emacs --version
GNU Emacs 24.5.1
...

Pourquoi ai-je des difficultés avec les chemins ? Pourquoi OS X les ignore-t-il ? Comment puis-je utiliser ma copie d'Emacs dans /usr/local/bin/emacs sans en spécifiant le chemin d'accès complet ?

0voto

Denis Rasulev Points 3363

Afin de modifier votre PATH pour que /usr/local/bin est en avance sur /usr/bin faire ce qui suit :

  1. exécuter . ~/.bash_profile
  2. exécuter PATH="/usr/local/bin:$PATH" dans le shell actuel
  3. redémarrer le terminal

Vous pouvez également modifier /etc/paths de sorte que /usr/local/bin est listé avant /usr/bin . Pour ce faire, vous devez autoriser l'accès à votre éditeur (sudo).

sudo open -t /etc/paths

Gardez à l'esprit que si vous modifiez /etc/paths il y a un risque que des applications non terminales récupèrent votre version construite localement. Pour information.

Un peu plus d'informations sur les chemins.

  1. /bin (et /sbin ) étaient destinés à des programmes qui devaient se trouver sur un petit écran. / avant la partition plus large /usr etc. ont été montées. De nos jours, il sert principalement d'emplacement standard pour des programmes clés tels que /bin/sh bien que l'intention initiale puisse encore être pertinente, par exemple pour les installations sur de petits appareils embarqués.

  2. /sbin , par opposition à /bin est destiné aux programmes de gestion du système (qui ne sont normalement pas utilisés par les utilisateurs ordinaires) nécessaires avant l'installation de l'application /usr est monté.

  3. /usr/bin est destiné aux programmes d'utilisateurs normaux gérés par la distribution.

  4. Hay un /usr/sbin avec la même relation avec /usr/bin comme /sbin doit /bin .

  5. /usr/local/bin est destiné aux programmes utilisateur normaux qui ne sont pas gérés par le gestionnaire de paquets de la distribution, par exemple les paquets compilés localement. Vous ne devez pas les installer dans /usr/bin car les futures mises à jour de la distribution peuvent les modifier ou les supprimer sans avertissement.

  6. /usr/local/sbin Comme vous pouvez probablement le deviner à ce stade, il s'agit de /usr/local/bin comme /usr/sbin a /usr/bin .

Cette source permet d'expliquer la norme de hiérarchie des systèmes de fichiers à un niveau plus profond.

Et vous pourriez trouver ceci article sur l'utilisation et l'abus des /usr/local/bin intéressant aussi.

0voto

J'ai constaté que je devais redémarrer la machine pour que les modifications soient prises en compte. Une déconnexion/ouverture de session aurait pu avoir le même effet, mais je ne l'ai pas essayé.

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