3 votos

Paradoja en la comprensión del "orden de arranque" de los programas dado por $PATH

Antecedentes

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

A ejecute la última versión debe ajustar su ruta de acceso al shell para que /usr/bin/git corre después de /usr/local/bin

...

Así que añade en la ruta [en mi caso: ~/.bash_profile] similar a la de abajo y mantener lo que ya tiene 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 entendimiento es este:

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

Así que... Si mis suposiciones son correctas, entonces seguramente el tutorial (citado anteriormente) debería haber sido así:

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 es así, ¿cuáles son mis suposiciones erróneas? Si mis suposiciones no son erróneas Y el tutorial no es erróneo, por favor explique por qué...


Nota: Soy consciente de que esto puede no ser realmente relevante para OSX 10.8.5, en cuyo caso, por favor, marque como off-topic al Stack Exchange 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 sé...

1 votos

Si /usr/bin/git se supone que es después de /usr/local/bin , a continuación, utilice export PATH="$PATH:/usr/bin/git" Es así de sencillo.

0 votos

@user3439894, gracias por ahora... pero creo que me gustaría tener algunos detalles más específicos sobre cómo funciona BASH con OSX... si por ejemplo, la versión del tutorial "funcionara" significaría que toda mi comprensión de BASH (al menos en OSX) estaba equivocada

1 votos

Si quiere saber cómo bash funciona, lea su página man. El funcionamiento de bash depende más de su versión que del sistema operativo. OS X/MacOS tiende a tener versiones más antiguas de bash que las actuales distros de Linux.

6voto

El tutorial está mal redactado, hay que nunca incluyen un binario (como /usr/bin/git ) en PATH Sólo los directorios. Una mejor alternativa sería escribir

Para ejecutar la última versión es necesario ajustar la ruta de acceso al shell para que /usr/local/bin se busca antes de /usr/bin

Por lo tanto, si se establece PATH a /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin la versión instalada manualmente de git se recogerá de /usr/local/bin .

PS: Manejo de PATH funciona igual para todos los sistemas basados en Unix, se buscan los distintos directorios para el comando de izquierda a derecha.

1 votos

También puede utilizar el comando which para determinar qué comando se utilizará. Simplemente abra su terminal y diga which git y responderá /usr/bin/git (en mi caso, el tuyo puede variar).

1 votos

Cuidado: el comando which se basa en su PATH dentro de algunos shells. En lugar de ello, utilice el sistema incorporado type que está hecho para analizarlo pero sin depender de su PATH .

0 votos

Quizás esto sea un cambio de paradigma para mí... mi entendimiento era el contrario. ¿Esto significa esencialmente que @user3439894 estaba equivocado en su comentario en el OP? "Si /usr/bin/git debe estar después de /usr/local/bin, entonces usa export PATH="$PATH:/usr/bin/git", ¡así de simple!"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X