Czy można dodać pojedynczy plik wykonywalny zamiast całego katalogu do mojego $ PATH?

9

Mam XAMPP zainstalowany w OSX i domyślnie przygotowuje ścieżkę do własnego binkatalogu (pełnego różnych narzędzi) do mojej $PATHzmiennej:

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

Niestety, nazywa się jedno z jego narzędzi HEAD, które dzięki systemowi plików OSX bez rozróżniania wielkości liter koliduje z headpoleceniem Uniksa . XAMPP HEADjest całkowicie niezwiązany z head(myślę, że wysyła żądanie HEAD HTTP).

Oczywiście chcę używać obu headi XAMPP, więc po prostu zmieniłem kolejność zmiennych ścieżki:

export PATH="$PATH:$XAMPP_PHP"

To pozwala mi używać head, ale teraz występuje kolizja między wersją PHP XAMPP (na przykład 5.5) a wstępnie zainstalowaną wersją PHP, która jest dostarczana z OSX (5.3). Ponieważ ścieżka do 5.3 jest na pierwszym miejscu, ostatecznie ma pierwszeństwo.

Mój plan na hackish rozwiązanie polegał na dodaniu pełnej ścieżki do pliku + nazwij po prostu wersję PHP XAMPP , a następnie dołącz resztę ścieżki po $PATH:

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

To nie wydaje się działać. Kiedy ponownie uruchamiam bash i sprawdzam php -v, nadal działa na PHP 5.3 - wersja wbudowana. Czy w ogóle można w ogóle dodać określoną ścieżkę do pliku $PATH?

alexw
źródło
4
Nie, $PATHmoże składać się tylko z katalogów. Możesz po prostu dowiązać konkretny plik wykonywalny do istniejącego katalogu w twoim $PATH.
larsks

Odpowiedzi:

8

Zakładając, że echo "$PATH"pokazuje to /usr/local/binna twojej ścieżce i biorąc pod uwagę, że jest to Twój osobisty laptop:

Utwórz dowiązanie symboliczne w /usr/local/bintym punkcie do żądanego pliku wykonywalnego.

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

Jeśli jest to komputer współużytkowany i nie chcesz wpływać na innych użytkowników, zalecamy skonfigurowanie niestandardowego rozszerzenia do ŚCIEŻKI w ~/.bash_profile. Sam mam jeden:

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

Następnie mogę umieścić moje niestandardowe dowiązania symboliczne, skrypty itp. ~/.binI będą działać zgodnie z oczekiwaniami (bez przesłaniania poleceń systemowych, które istnieją wcześniej w mojej ŚCIEŻCE).

Stawiam .na początku, .binwięc nie muszę widzieć katalogu podczas przeglądania w Finderze.

Dzika karta
źródło