php – 为什么COMPOSER_HOME为空?
作者:互联网
我有一个关于编程工具composer的问题,它在/usr/local/bin / composer中作为可执行文件安装在我在工作和家庭之间使用的3台不同的机器上.根据:
composer help global
06001
但这两个都是空的:
echo $COMPOSER_HOME
echo $COMPOSER_BIN_DIR
当我跑:
composer global require <package>
它仅在我的Ubuntu 16.04桌面上安装到/home/\u0026lt;user\u0026gt;/.config/composer/vendor/bin,但在其他任何地方都安装到/home/\u0026lt;user\u0026gt;/.composer/vendor/bin
为什么安装到〜/ .config而不是〜/ .composer并且没有设置COMPOSER_HOME变量?
我注意到这一点是因为我提供了包含全局作曲家bin路径的常见dotfiles.我知道我可以通过在我的bashrc中手动设置COMPOSER_HOME来解决这个问题,但我宁愿理解为什么会发生这种情况.
解决方法:
source code揭示了如何计算Composer主目录的额外复杂性.
如果您的系统使用freedesktop.org标准,它通过查找environment variables beginning with XDG_
检测到,那么Composer使用$XDG_CONFIG_HOME / composer /,如果没有设置,则回退到$HOME / .config / composer /.
您可能有兴趣看到有一个special case:if $HOME / .composer / exists是一个目录,它将用于支持freedesktop.org逻辑.据推测,这是为了向后兼容.如果手动创建此目录,Composer应该使用它.
我不确定为什么这只会影响你的Ubuntu 16.04机器.运行Ubuntu 14.04变体的旧笔记本电脑使用XDG_环境变量.
我怀疑你是在freedesktop.org逻辑was added in July of 2015之后第一次在该机器上安装了Composer,并且之前你的其他机器都安装了Composer.然后他们现有的〜/ .composer /目录将确保Composer继续使用该位置.
标签:php,bash,composer-php,ubuntu-16-04 来源: https://codeday.me/bug/20190724/1524699.html