При разработке на Laravel мы часто вводим команды, такие как ./vendor/bin/pest
запуск команд для конкретного проекта.
Нам это не нужно!
Чтобы помочь здесь, мы можем обновить нашу переменную Mac (или Linux). $PATH
Что ?$PATH
Переменная $PATH
задает каталоги, которые ваша система ищет при поиске команд для выполнения.
Например, мы можем набратьwhich <cmd>
, чтобы найти путь к любой заданной команде:
$ which git
/usr/local/bin/git
Моя система знала, что нужно найти git
/usr/local/bin
, потому что /usr/local/bin
в моем $PATH
!Вы можете echo
указать свой путь прямо сейчас:
# Output the whole path
echo $PATH
# For human-readability, split out each
# directory into a new line:
echo "$PATH" | tr ':' '\n'
Относительные каталоги в PATH
Мы можем отредактировать нашу $PATH
переменную, чтобы добавить в нее любые каталоги, которые мы хотим!
Одним из чрезвычайно удобных приемов является установка относительных каталогов в вашей $PATH
переменной.
Два примера: добавление ./vendor/bin
и :Здесь
# In your ~/.zshrc, ~/.bashrc or, ~/.bash_profile or similar
# Each directory is separated by a colon
PATH=./vendor/bin:./node_modules/.bin:$PATH
мы добавили ./node_modules/.bin
два наших новых пути к существующей $PATH
переменной. Теперь, независимо от того, в какое приложение Laravel мы попали, мы можем запустить и знать, что мы запускаем , чтобы запустить ./vendor/bin/phpunit
pest
(и то же самое для любой заданной команды Node в ./node_modules/.bin
).
phpunit
./vendor/bin/pest
cd
Мы также можем установить текущий каталог .
в нашем $PATH
(если он еще не установлен - это может быть):
# In your ~/.zshrc, ~/.bashrc or, ~/.bash_profile or similar
# Each directory is separated by a colon
# Here we also set the current directory in our PATH
PATH=.:./vendor/bin:./node_modules/.bin:$PATH
Таким образом, мы можем ввести artisan
вместо ./artisan
или php artisan
.
Это настройки, которые у меня есть в Chipper CI, чтобы пользователи могли запускать pest
или phpunit
не беспокоиться о том, где существует команда в их средах CI.
Порядок примечаний
также имеет значение в $PATH
. При поиске команды в первую очередь выполняется поиск в более ранних каталогах. Система будет использовать первую найденную команду - это означает, что вы можете переопределить системную команду, поместив ее в каталог ранее в $PATH
. Вот почему мы добавляем и ./node_modules/.bin
в$PATH
, а не добавляем ./vendor/bin
его.
Вы можете найти все местоположения такой команды:
$ 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.