¿Es posible agregar un solo ejecutable, en lugar de un directorio completo, a mi $ PATH?

9

Tengo XAMPP instalado en OSX, y de manera predeterminada antepone la ruta a su propio bindirectorio (lleno de varias utilidades) a mi $PATHvariable:

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

Lamentablemente, se llama una de sus utilidades HEAD, que gracias al sistema de archivos insensible a mayúsculas y minúsculas de OSX, colisiona con el headcomando Unix . XAMPP no tiene ninguna HEADrelación head(creo que emite una solicitud HEAD HTTP).

Por supuesto, quiero usar ambos heady XAMPP, así que simplemente cambié el orden de la variable de ruta:

export PATH="$PATH:$XAMPP_PHP"

Esto me permite usar head, pero ahora hay una colisión entre la versión de PHP de XAMPP (por ejemplo, 5.5) y la versión preinstalada de PHP que viene con OSX (5.3). Dado que el camino hacia 5.3 viene primero, termina teniendo prioridad.

Mi plan para una solución pirata era anteponer la ruta completa del archivo + nombre solo la versión de PHP de XAMPP , luego agregar el resto de la ruta después de $PATH:

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

Parece que esto no funciona. Cuando reinicio bash y compruebo php -v, todavía está en PHP 5.3, la versión incorporada. ¿Es posible agregar una ruta de archivo específica $PATH?

alexw
fuente
44
No, $PATHpuede consistir solo en directorios. Simplemente puede vincular el ejecutable particular que desea en un directorio existente en su $PATH.
larsks

Respuestas:

8

Asumiendo que eso se echo "$PATH"muestra /usr/local/binen su camino, y dado que esta es su computadora portátil personal:

Cree un enlace simbólico /usr/local/binque apunte al ejecutable que desea.

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

Si es una computadora compartida y no desea afectar a otros usuarios, le recomiendo configurar una extensión personalizada para su RUTA ~/.bash_profile. Yo tengo uno:

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

Luego puedo poner mis enlaces simbólicos, scripts, etc. personalizados ~/.biny se ejecutarán como se esperaba (sin anular los comandos del sistema que existen anteriormente en mi RUTA).

Puse el .al principio de .binpara no tener que ver el directorio cuando navego en Finder.

Comodín
fuente