Ist es möglich, meinem $ PATH eine einzelne ausführbare Datei anstelle eines gesamten Verzeichnisses hinzuzufügen?

9

Ich habe XAMPP in OSX installiert und standardmäßig stellt es den Pfad zu seinem eigenen binVerzeichnis (voll mit verschiedenen Dienstprogrammen) meiner $PATHVariablen voran :

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

Leider wird eines seiner Dienstprogramme aufgerufen HEAD, das dank des Dateisystems, bei demhead die Groß- und Kleinschreibung nicht berücksichtigt wird, mit dem Unix- Befehl kollidiert . XAMPPs HEADsind völlig unabhängig von head(ich denke, es gibt eine HTTP-HEAD-Anfrage aus).

Natürlich möchte ich sowohl headXAMPP als auch XAMPP verwenden, also habe ich einfach die Reihenfolge der Pfadvariablen geändert:

export PATH="$PATH:$XAMPP_PHP"

Dies lässt mich verwenden head, aber jetzt gibt es eine Kollision zwischen der XAMPP-Version von PHP (z. B. 5.5) und der vorinstallierten Version von PHP, die mit OSX (5.3) geliefert wird. Da der Pfad zu 5.3 an erster Stelle steht, hat er Vorrang.

Mein Plan für eine hackige Lösung war es, dem vollständigen Dateipfad + Namen nur die XAMPP-Version von PHP voranzustellen und den Rest des Pfads nachher anzuhängen $PATH:

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

Dies scheint nicht zu funktionieren. Wenn ich bash neu starte und überprüfe php -v, ist es immer noch auf PHP 5.3 - der integrierten Version. Ist es überhaupt möglich, einen bestimmten Dateipfad hinzuzufügen $PATH?

alexw
quelle
4
Nein, $PATHdarf nur aus Verzeichnissen bestehen. Sie können die gewünschte ausführbare Datei einfach mit einem vorhandenen Verzeichnis in Ihrem Verzeichnis verknüpfen $PATH.
Larsks

Antworten:

8

Angenommen, dies echo "$PATH"zeigt sich /usr/local/binauf Ihrem Weg und vorausgesetzt, dies ist Ihr persönlicher Laptop:

Erstellen Sie einen Symlink /usr/local/bin, der auf die gewünschte ausführbare Datei verweist.

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

Wenn es sich um einen freigegebenen Computer handelt und Sie keine Auswirkungen auf andere Benutzer haben möchten, empfehlen wir, eine benutzerdefinierte Erweiterung für Ihren PATH in einzurichten ~/.bash_profile. Ich habe selbst einen:

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

Dann kann ich meine benutzerdefinierten Symlinks, Skripte usw. einfügen ~/.binund sie werden wie erwartet ausgeführt (ohne die zuvor in meinem PATH vorhandenen Systembefehle zu überschreiben).

Ich habe das .am Anfang von gesetzt, .bindamit ich das Verzeichnis beim Surfen im Finder nicht sehen muss.

Platzhalter
quelle