Paradoja para entender el "orden de arranque" de los programas dados por $ PATH

3

Fondo

Este tutorial sobre cómo "instalar correctamente git "en OSX 10.8.5, dice:

  

Para ejecutar la última versión debe ajustar su ruta de acceso de shell para que    / usr / bin / git ejecuta after /usr/local/bin

     

...

     

Así que agregue en la ruta [en mi caso: ~ / .bash_profile] similar a la siguiente y mantenga lo que ya está   tener en la ruta, cada segmento está separado por dos puntos:

     

export PATH="/usr/local/bin:/usr/bin/git:/usr/bin:/usr/local/sbin:$PATH"

                                   ^ Focus on this

Así que mi comprensión es esta:

  • cuando inicie sesión, BASH dará prioridad a lo que se anexa más en el lado derecho de la línea export PATH=...
  • $ PATH está en la entrada más delimitada : delimitada en la línea export PATH=...
  • $ PATH contiene /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Entonces ... Si mis suposiciones son correctas, entonces seguramente el tutorial (citado arriba) debería haber parecido:

export PATH="$PATH:/usr/bin/git"

En lugar de:

export PATH="/usr/local/bin:/usr/bin/git:/usr/bin:/usr/local/sbin:$PATH"

Mis preguntas son:

¿Está mal el tutorial? Si no, ¿qué hay de mis suposiciones equivocadas? Si mis suposiciones no son incorrectas Y el tutorial no es incorrecto, explique por qué ...

Nota: Soy consciente de que esto puede no ser realmente relevante para OSX 10.8.5, en cuyo caso, marque como fuera de tema para el intercambio de pila apropiado. Pero, AFAIK, mi máquina Ubuntu ha funcionado bien con ~ / .bashrc teniendo cosas como:

export PATH=$PATH:<myProgram1>:<myProgram2>:...

¿Entonces puede ser que BASH se comporte de manera diferente en OSX? No lo se ...

    
pregunta hello_there_andy 28.02.2017 - 00:36

1 respuesta

6

El tutorial está mal redactado, uno debería nunca incluir un binario (como /usr/bin/git ) en PATH , solo directorios. Una mejor alternativa sería escribir

  

Para ejecutar la última versión, debe ajustar la ruta de acceso de la shell de modo que se busque de /usr/local/bin antes /usr/bin

Entonces, si establece PATH en /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin , la versión instalada manualmente de git se elegirá de /usr/local/bin .

PS: El manejo de PATH funciona de la misma manera en todos los sistemas basados en Unix, los directorios se buscan para el comando de izquierda a derecha.

    
respondido por el nohillside 28.02.2017 - 08:44

Lea otras preguntas en las etiquetas