Чи можна додати в свій $ PATH один виконавчий файл, а не цілий каталог?


9

У мене встановлено XAMPP в OSX, і він за замовчуванням передує шлях до власної binдиректорії (повно різноманітних утиліт) до моєї $PATHзмінної:

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

Швидше , до жаль, одна з його утиліта називається HEAD, що завдяки регістронезавісімого файлової системи OSX, в наштовхується з Unix headкомандою . XAMPP HEADповністю не пов'язаний head(я думаю, він видає HTTP HEAD запит).

Звичайно, я хочу використовувати обидва headі XAMPP, тому я просто змінив порядок змінної контуру:

export PATH="$PATH:$XAMPP_PHP"

Це дозволяє мені використовувати head, але зараз відбувається зіткнення між версією PHP XAMPP (наприклад, 5.5) та попередньо встановленою версією PHP, що постачається з OSX (5.3). Оскільки шлях до 5.3 поступає першим, він закінчує перевагу.

Мій план хакітного рішення полягав у тому , щоб додати повний шлях до файлу + ім'я лише PHP-версії XAMPP , а потім додати решту шляху після $PATH:

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

Це, здається, не працює. Коли я перезапускаю bash і перевіряю php -v, він все ще знаходиться на PHP 5.3 - вбудованій версії. Чи взагалі можливо додати певний шлях до файлу $PATH?


4
Ні, $PATHможе складатися лише з каталогів. Ви можете просто посилання на конкретний виконуваний файл, який ви хочете, у існуючий каталог у вашому $PATH.
larsks

Відповіді:


8

Припустимо, що це echo "$PATH"показує /usr/local/binна вашому шляху та враховуючи, що це ваш особистий ноутбук:

Створіть символьне посилання, /usr/local/binяке вказує на потрібний виконуваний файл.

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

Якщо це загальнодоступний комп'ютер і ви не хочете впливати на інших користувачів, рекомендую налаштувати спеціальне розширення для свого PATH в ~/.bash_profile. У мене є один:

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

Тоді я можу розмістити свої власні символьні посилання, сценарії тощо тощо, ~/.binі вони працюватимуть, як очікувалося (без переосмислення системних команд, які існували раніше в моєму PATH).

Я ставлю .на початок, .binтому мені не доведеться бачити каталог під час перегляду в Finder.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.