以 root 身份查找 Composer 全局安装路径

以 root 身份查找 Composer 全局安装路径

php composer我在脚本中使用全局安装了一些 php 软件包

sudo -u me composer global require "phpmd/phpmd"

我想找到这些全局安装的php包的路径。当我which phpmd以用户身份运行时me,我得到了完整路径。

/home/me/.composer/vendor/bin/phpcs

但是,当我尝试运行该命令时,sudo我什么也没得到。我认为这是因为 Composer 已全局添加并在我的 user 中,mePATH它不存在于 sudo 中PATH

相反我尝试过

 path="$(sudo -u me which phpcs)"

但这也失败了。但是,对于任何未通过 Composer 安装的程序,它都会成功。如何通过composer as找到全局安装的php包sudo

我的路

/home/me/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

sudo (su 的) 路径

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

答案1

正如您在路径差异中注意到的那样,问题在于我的路径包含/home/me/.composer/vendor/bin. Sudo 不会继承用户的环境。

您需要手动导入它。不过,尚不清楚为什么您希望 root 看到其路径中的特定用户的文件。

要查找文件,您可以使用find诸如 之类的命令find /home -name FileName

答案2

感谢朱莉的建议和其他一些答案,我想出了

 path="$(PATH=$PATH:/home/me/.composer/vendor/bin which phpcs)"

效果很好

相关内容