Come faccio a utilizzare homebrew less invece di system less?

4

Ho installato less tramite

homebrew install less

ma less avvia la versione di sistema di less , non quella installata tramite homebrew. which less mostra:

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

dove /usr/local/bin/less è un collegamento simbolico a ../Cellar/less/487/bin/less (homebrew less ) e /usr/bin/less è il sistema less . echo $LESS non restituisce nulla. Come posso avviare homebrew less invece di system less di default?

    
posta Cpt_Jauchefuerst 18.04.2017 - 10:15
fonte

2 risposte

11

Ciò potrebbe essere dovuto alla tabella hash dei comandi di bash in PATH che utilizza ancora il vecchio valore. Rimuovi l'hash di less o cancella l'hash, in modo che bash riesca a cercare PATH :

hash -d less
# or, hash -r

Puoi anche aggiungere manualmente un percorso alla tabella:

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

Da il manuale di Bash (enfasi mia):

If the name is neither a shell function nor a builtin, and contains no slashes, Bash searches each element of $PATH for a directory containing an executable file by that name. Bash uses a hash table to remember the full pathnames of executable files to avoid multiple PATH searches (see the description of hash in Bourne Shell Builtins). A full search of the directories in $PATH is performed only if the command is not found in the hash table.

    
risposta data 18.04.2017 - 12:32
fonte
3

Se homebrew è installato correttamente /usr/local/bin/ viene controllato prima di /usr/bin/ . Verifica questo con echo $PATH , questo ti mostrerà il percorso in cui il SO sta cercando di trovare il comando che hai inserito e li sta provando nell'ordine mostrato.

Un po 'più carino usando la shell bash:

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

(utilizzando la shell fish ):

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

Questo mostrerà un elenco numerato del percorso provato. I miei spettacoli

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

Il sistema attraverserà le directory nell'ordine sopra in cerca di comandi, nel tuo caso less . Se non è nel primo, proverà il prossimo finché non esaurirà le opzioni e genererà un errore.

Quindi se la tua echo $PATH mostra risultati simili a quelli che stai utilizzando la versione homebrew di less.

    
risposta data 18.04.2017 - 11:29
fonte

Leggi altre domande sui tag