È possibile aggiungere un singolo eseguibile, anziché un'intera directory, al mio $ PATH?


9

Ho XAMPP installato in OSX e per impostazione predefinita antepone il percorso alla propria bindirectory (piena di varie utility) alla mia $PATHvariabile:

# Add path to XAMPP PHP version
export XAMPP_PHP=/Applications/XAMPP/xamppfiles/bin
export PATH="$XAMPP_PHP:$PATH"

Piuttosto, sfortunatamente, viene chiamata una delle sue utility HEAD, che grazie al filesystem insensibile al maiuscolo / minuscolo di OSX, si scontra con il headcomando Unix . XAMPP non HEADè completamente correlato a head(penso che emetta una richiesta HEAD HTTP).

Ovviamente, voglio usare entrambi heade XAMPP, quindi ho semplicemente cambiato l'ordine delle variabili di percorso:

export PATH="$PATH:$XAMPP_PHP"

Questo mi permette di usarlo head, ma ora c'è una collisione tra la versione di PHP di XAMPP (ad esempio 5.5) e la versione preinstallata di PHP fornita con OSX (5.3). Poiché il percorso per 5.3 viene prima, finisce per avere la precedenza.

Il mio piano per una soluzione hacker era anteporre il percorso completo del file + nome solo alla versione di PHP di XAMPP , quindi aggiungere il resto del percorso dopo $PATH:

export PATH="/Applications/XAMPP/xamppfiles/bin/php:$PATH:$XAMPP_PHP"

Questo non sembra funzionare. Quando riavvio bash e controllo php -v, è ancora su PHP 5.3 - la versione integrata. È anche possibile aggiungere un percorso file specifico $PATHa tutti?


4
No, $PATHpuò consistere solo in directory. Potresti semplicemente collegare simbolicamente il particolare eseguibile che desideri in una directory esistente nel tuo $PATH.
Larks

Risposte:


8

Supponendo che echo "$PATH"mostri /usr/local/binnel tuo percorso e dato che questo è il tuo laptop personale:

Crea un collegamento simbolico /usr/local/binche punti all'eseguibile che desideri.

ln -s /Applications/XAMPP/xamppfiles/bin/php /usr/local/bin/php

Se si tratta di un computer condiviso e non si desidera influire su altri utenti, si consiglia di impostare un'estensione personalizzata per il PERCORSO in ~/.bash_profile. Ne ho uno anch'io:

$ grep PATH ~/.bash_profile 
export PATH="$PATH:$HOME/.bin"

Quindi posso inserire i miei symlink personalizzati, script, ecc. ~/.binE funzioneranno come previsto (senza sovrascrivere i comandi di sistema che esistono in precedenza nel mio PERCORSO).

L'ho messo .all'inizio di .bincosì non devo vedere la directory durante la navigazione in Finder.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.