10 votes

Comment utiliser homebrew less au lieu de system less ?

J'ai installé less via

homebrew install less

mais less lance la version système de less et non celui installé via homebrew. which less montre :

$ which -a less
/usr/local/bin/less
/usr/bin/less

/usr/local/bin/less est un lien symbolique vers ../Cellar/less/487/bin/less (homebrew less ) et /usr/bin/less est le système less . echo $LESS ne renvoie rien. Comment puis-je lancer homebrew less au lieu du système less par défaut ?

15voto

muru Points 725

Cela pourrait être dû à la table de hachage des commandes de bash dans PATH utilisant toujours l'ancienne valeur. Supprimez le hachage de less ou effacer le hachage, de sorte que bash recherche à nouveau PATH :

hash -d less
# or, hash -r

Vous pouvez également ajouter manuellement un chemin d'accès au tableau :

hash -p /usr/local/bin/less less

De le manuel Bash (c'est moi qui souligne) :

Si le nom n'est ni une fonction de l'interpréteur de commandes, ni une fonction intégrée, et ne contient pas de code Bash recherche chaque élément de $PATH pour un répertoire contenant un fichier exécutable de ce nom. Bash utilise une table de hachage pour pour mémoriser le chemin d'accès complet des fichiers exécutables afin d'éviter des PATH recherches (voir la description de hash sur Builtins du Bourne Shell ). A recherche complète des répertoires dans $PATH n'est effectuée que si le commande n'est pas trouvée dans la table de hachage.

4voto

PeterVP Points 1030

Si homebrew est correctement installé /usr/local/bin/ est vérifié avant /usr/bin/ . Vérifiez cela avec echo $PATH Ceci vous montrera les chemins que le système d'exploitation essaie de trouver la commande que vous avez entrée et il les essaie dans l'ordre indiqué.

Un peu de fantaisie
en utilisant le shell bash :

echo $PATH | awk '{ n = split($0, paths, ":"); for (i=0; ++i <= n;) print i, paths[i] }'

(en utilisant le poisson shell) :

echo $PATH | awk '{ n = split($0, paths, " "); for (i=0; ++i <= n;) print i, paths[i] }'

Ceci montrera une liste numérotée des chemins essayés. Le mien montre

1 /Users/peter/.gem/ruby/2.0.0/bin
2 /usr/local/sbin
3 /usr/local/bin
4 /usr/bin
5 /bin
6 /usr/sbin
7 /sbin
8 /Library/TeX/texbin

Le système va parcourir les répertoires dans l'ordre ci-dessus à la recherche de commandes, dans votre cas less . S'il n'est pas dans le premier, il essaiera le suivant jusqu'à ce qu'il soit à court d'options et affiche une erreur.

Donc, si votre echo $PATH montre des résultats similaires aux miens, vous utilisez la version homebrew de less.

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