Найти тему
Laravel Topsite Web

Настройки $PATH для Laravel

Оглавление

При разработке на Laravel мы часто сталкиваемся с тем, что вводим команды типа ./vendor/bin/pest для запуска команд, специфичных для проекта. Но мы можем обновить переменную $PATH вашего Mac (или Linux).

Что такое $PATH?

Переменная $PATH задает каталоги, которые ваша система ищет при поиске команд для запуска.

Например, мы можем ввести which <cmd>, чтобы найти путь к любой заданной команде:

$ which git
/usr/local/bin/git

Моя система знала, что нужно найти git в /usr/local/bin, потому что /usr/local/bin — это один каталог, установленный в моем $PATH!

Вы можете вывести с помощью echo свой путь:

# Выведите весь путь целиком
echo $PATH
# Для удобства чтения человеком разделите каждый каталог в новую строку
echo "$PATH" | tr ':' '\n'

Относительные каталоги в PATH

Мы можем отредактировать нашу переменную $PATH, чтобы добавить в любые каталоги!

Один из удобных трюков — установить относительные каталоги в переменной $PATH.

Два примера ./vendor/bin и ./node_modules/.bin:

# В вашем ~/.zshrc, ~/.bashrc или, ~/.bash_profile или подобном
# Каждый каталог разделен двоеточием
PATH=./vendor/bin:./node_modules/.bin:$PATH

Здесь мы добавили два наших новых пути к существующей переменной $PATH. Теперь, независимо от того, к какому приложению Laravel мы подключены, мы можем запустить pest и знать, что мы запускаем ./vendor/bin/pest, phpunit для запуска ./vendor/bin/phpunit (и то же самое для любой заданной команды узла в ./node_modules/.bin).

Мы также можем установить текущий каталог "." в нашем $PATH.

# В вашем ~/.zshrc, ~/.bashrc или, ~/.bash_profile или подобном
# Каждый каталог разделен двоеточием
# Здесь мы также указываем текущий каталог в нашем PATH
PATH=.:./vendor/bin:./node_modules/.bin:$PATH

Таким образом, мы можем ввести artisan вместо ./artisan или php artisan.

Примечания

Порядок также имеет значение в $PATH. Когда выполняется поиск команды, сначала выполняется поиск в более ранних каталогах. Система будет использовать первую найденную команду — это означает, что вы можете переопределить системную команду, поместив ее в каталог ранее в $PATH. Вот почему мы добавляем ./vendor/bin и ./node_modules/.bin в $PATH.

Вы можете найти все места команды, подобные этому:

$ which -a git
git is /usr/local/bin/git
git is /usr/bin/git
git is /usr/local/bin/git
git is /usr/bin/git

Наконец, во всех случаях команды должны иметь исполняемые разрешения для такой работы. Это то, что нужно иметь в виду при создании собственных команд, таких как пользовательский скрипт bash.