Paradox nella comprensione dell '"ordine di avvio" dei programmi dati da $ PATH

3

Sfondo

Questo tutorial su come "installare correttamente git "su OSX 10.8.5, dice:

To run the latest version you need to adjust your shell path so that /usr/bin/git runs after /usr/local/bin

...

So add into the path [in my case: ~/.bash_profile] similar to the below and keep what you already have in the path, each segment is separated by a colon:

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

                                   ^ Focus on this

Quindi la mia comprensione è questa:

  • quando effettuo il login, BASH darà la priorità a tutto ciò che viene aggiunto ulteriormente sul lato destro della riga export PATH=...
  • $ PATH è nella voce delimitata più raro-most : nella riga export PATH=...
  • $ PATH contiene /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Quindi ... Se le mie supposizioni sono corrette, allora sicuramente il tutorial (citato sopra) avrebbe dovuto assomigliare a:

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

Invece di:

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

Le mie domande sono:

Il tutorial è sbagliato? Se no, allora quale delle mie supposizioni sono sbagliate? Se le mie supposizioni non sono sbagliate E il tutorial non è sbagliato, ti preghiamo di spiegare perché ...

Nota: sono consapevole che questo potrebbe non essere rilevante per OSX 10.8.5, nel qual caso contrassegnare come off-topic allo Stack Exchange appropriato. Ma AFAIK, la mia macchina Ubuntu ha funzionato bene con ~ / .bashrc che ha cose come:

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

Quindi potrebbe essere che BASH si comporta diversamente in OSX? Non lo so ...

    
posta hello_there_andy 28.02.2017 - 00:36
fonte

1 risposta

6

Il tutorial è mal scritto, uno dovrebbe mai includere un binario (come /usr/bin/git ) in PATH , solo directory. Un'alternativa migliore sarebbe scrivere

To run the latest version you need to adjust your shell path so that /usr/local/bin is searched before /usr/bin

Quindi, se imposti PATH su /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin , la versione installata manualmente di git verrà selezionata da /usr/local/bin .

PS: la gestione di PATH funziona allo stesso modo per tutti i sistemi basati su Unix, le varie directory vengono ricercate per il comando da sinistra a destra.

    
risposta data 28.02.2017 - 08:44
fonte

Leggi altre domande sui tag