答案是全局bin目录未加入path;需运行composer global config bin-dir --absolute查出真实路径(如/home/alex/.config/composer/vendor/bin),再将其添加到对应shell配置文件(~/.zshrc或~/.bashrc)并source生效,最后用which laravel验证。

装完 composer global require 却找不到 laravel、phpunit 这类命令?不是没装上,是全局 bin 目录根本没进 $PATH——Linux 下这一步必须手动做,而且容易在路径拼写、shell 配置文件、重载时机上出错。
怎么查当前全局 bin 目录真实路径
别猜 ~/.composer/vendor/bin,新版 Composer(2.4+)默认路径已改,还可能被自定义过。唯一可靠方式是运行:
composer global config bin-dir --absolute
输出类似:/home/alex/.config/composer/vendor/bin。这个路径才是你后续要加进 $PATH 的目标位置。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
怎么把 bin 目录加进 PATH 并生效
Linux 下 PATH 修改必须匹配你当前 shell 类型,且改完要重载配置,否则新开终端前旧窗口永远不认新路径。
- 先确认 shell:运行
echo $SHELL,常见是/bin/zsh或/bin/bash - zsh 用户:编辑
~/.zshrc,末尾加一行:export PATH="/home/alex/.config/composer/vendor/bin:$PATH"(把上面查到的路径填进去) - bash 用户:编辑
~/.bashrc或~/.bash_profile,同样加export PATH="...:$PATH" - 加完必须重载:
source ~/.zshrc(zsh)或source ~/.bashrc(bash) - 验证是否成功:
echo $PATH | grep composer应该能搜到你刚加的路径;再试which laravel,有输出才算真生效
为什么加了 PATH 还是 command not found
常见原因不是命令没装,而是环境变量没被正确继承或路径本身有问题:
-
~/.zshrc里写export PATH=$HOME/.config/composer/vendor/bin:$PATH没加双引号:如果路径含空格或中文用户名,$HOME展开后会被截断 - 用了
sudo安装但没给 bin 目录可执行权限:虽然 Composer 自动建的是软链接,但目标文件需有x权限,可运行ls -l ~/.config/composer/vendor/bin/laravel看是否指向有效文件 - IDE(如 PHPStorm)里命令仍报错:它不自动读终端的
$PATH,得进Settings → PHP → CLI Interpreter手动指定完整路径,或启用Shell environment选项 - PATH 中路径顺序错误:如果你把系统级
/usr/local/bin放在后面,而前面某路径里有同名但旧版的laravel,就会优先调用错的
最易被忽略的一点:改完 ~/.zshrc 后只在当前终端里 source 了一次,但 IDE 启动时用的是全新会话,它不会自动加载你的 shell 配置——除非你显式告诉它继承环境变量,或者干脆在 IDE 设置里硬编码完整路径。










