¿Cómo uso menos homebrew en lugar del sistema menos?

4

He instalado less a través de

homebrew install less

pero less inicia la versión del sistema de less , no la instalada a través de homebrew. which less muestra:

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

donde /usr/local/bin/less es un enlace simbólico a ../Cellar/less/487/bin/less (homebrew less ) y /usr/bin/less es el sistema less . echo $LESS no devuelve nada. ¿Cómo puedo iniciar homebrew less en lugar del sistema less de forma predeterminada?

    
pregunta Cpt_Jauchefuerst 18.04.2017 - 10:15

2 respuestas

11

Esto podría deberse a que la tabla hash de comandos de bash en PATH sigue usando el valor antiguo. Elimine el hash de less , o borre el hash, para que bash vuelva a buscar PATH :

hash -d less
# or, hash -r

También puede agregar manualmente una ruta a la tabla:

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

De el manual de Bash (énfasis mío):

  

Si el nombre no es una función de shell ni un componente, y no contiene   con barras, Bash busca en cada elemento de $PATH un directorio   que contiene un archivo ejecutable por ese nombre. Bash usa una tabla hash para   recuerde los nombres de ruta completos de los archivos ejecutables para evitar múltiples PATH   búsquedas (consulte la descripción de hash en Bourne Shell Builtins ). A   la búsqueda completa de los directorios en $PATH se realiza solo si el   el comando no se encuentra en la tabla hash.

    
respondido por el muru 18.04.2017 - 12:32
3

Si Homebrew está correctamente instalado, /usr/local/bin/ se comprueba antes de /usr/bin/ . Verifique esto con echo $PATH , esto le mostrará la ruta donde el sistema operativo está tratando de encontrar el comando que ingresó y los está intentando en el orden que se muestra.

Un poco más elegante
usando el shell bash:

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

(utilizando el shell fish ):

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

Esto mostrará una lista numerada de la ruta intentada. Espectáculos de minas

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

El sistema atravesará los directorios en el orden anterior en busca de comandos, en su caso less . Si no está en la primera, intentará la siguiente hasta que se quede sin opciones y arroje un error.

Entonces, si su echo $PATH muestra resultados similares a los míos, está usando la versión homebrew de less.

    
respondido por el PeterVP 18.04.2017 - 11:29

Lea otras preguntas en las etiquetas