Est-il possible d'ajouter un seul exécutable, plutôt qu'un répertoire entier, à mon $ PATH?

9

J'ai XAMPP installé dans OSX, et par défaut il ajoute le chemin de son propre binrépertoire (plein de divers utilitaires) à ma $PATHvariable:

# Add path to XAMPP PHP version
export XAMPP_PHP=/Applications/XAMPP/xamppfiles/bin
export PATH="$XAMPP_PHP:$PATH"

Plutôt malheureusement, un de ses utilitaires est appelé HEAD, qui, grâce au système de fichiers insensible à la casse d'OSX, entre en collision avec la headcommande Unix . XAMPP HEADn'a aucun rapport avec head(je pense qu'il émet une requête HTTP HEAD).

Bien sûr, je veux utiliser les deux headet XAMPP, j'ai donc simplement changé l'ordre des variables de chemin:

export PATH="$PATH:$XAMPP_PHP"

Cela me permet d'utiliser head, mais maintenant il y a une collision entre la version de XAMPP de PHP (par exemple, 5.5) et la version préinstallée de PHP fournie avec OSX (5.3). Puisque le chemin vers 5.3 vient en premier, il finit par avoir la priorité.

Mon plan pour une solution piratée consistait à ajouter le chemin complet du fichier + le nom uniquement à la version de XAMPP de PHP , puis à ajouter le reste du chemin après $PATH:

export PATH="/Applications/XAMPP/xamppfiles/bin/php:$PATH:$XAMPP_PHP"

Ça n'a pas l'air de fonctionner. Quand je redémarre bash et vérifie php -v, c'est toujours sur PHP 5.3 - la version intégrée. Est-il même possible d'ajouter un chemin de fichier spécifique $PATH?

alexw
la source
4
Non, ne $PATHpeut comprendre que des répertoires. Vous pouvez simplement créer un lien symbolique vers l'exécutable particulier que vous souhaitez dans un répertoire existant de votre $PATH.
larsks

Réponses:

8

En supposant que cela echo "$PATH"apparaisse /usr/local/binsur votre chemin, et étant donné qu'il s'agit de votre ordinateur portable personnel:

Créez un lien symbolique /usr/local/binqui pointe vers l'exécutable souhaité.

ln -s /Applications/XAMPP/xamppfiles/bin/php /usr/local/bin/php

S'il s'agit d'un ordinateur partagé et que vous ne souhaitez pas affecter d'autres utilisateurs, je vous recommande de configurer une extension personnalisée pour votre PATH dans ~/.bash_profile. J'en ai un moi-même:

$ grep PATH ~/.bash_profile 
export PATH="$PATH:$HOME/.bin"

Ensuite, je peux mettre mes liens symboliques personnalisés, scripts, etc. dans ~/.binet ils fonctionneront comme prévu (sans remplacer les commandes système qui existent plus tôt dans mon PATH).

J'ai mis le .au début de .bindonc je n'ai pas besoin de voir le répertoire lors de la navigation dans le Finder.

Caractère générique
la source