COMPOSER_HOME为何为空



我有一个关于编程工具composer的问题,它在/usr/local/bin/composer中作为可执行文件安装在我在工作和家庭之间使用的3台不同的机器上。根据:

composer help global
COMPOSER_HOME is c:Users<user>AppDataRoamingComposer on Windows
and /home/<user>/.composer on unix systems.
Note: This path may vary depending on customizations to bin-dir in
composer.json or the environmental variable COMPOSER_BIN_DIR.

但这两个都是空的:

echo $COMPOSER_HOME
echo $COMPOSER_BIN_DIR

当我运行时:

composer global require <package>

在我的Ubuntu 16.04桌面上,它只安装到/home/<user>/.config/composer/vendor/bin,但在其他任何地方,它都会适当地安装到/home/<user>/.composer/vendor/bin

为什么它安装到~/.config而不是~/.composer,并且没有设置COMPOSER_HOME变量?

我之所以注意到这一点,是因为我的公共点文件包括全局composer bin路径。我知道我可以通过在bashrc中手动设置COMPOSER_HOME来解决这个问题,但我更愿意首先理解为什么会发生这种情况。

源代码揭示了Composer主目录计算的一些额外复杂性。

如果您的系统使用freedesktop.org标准,它通过查找以XDG_开头的环境变量来检测该标准,则Composer使用$XDG_CONFIG_HOME/composer/,如果未设置,则返回到$HOME/.config/composer/

您可能有兴趣了解有一种特殊情况:如果$HOME/.composer/存在并且是一个目录,那么它将被用于支持freedesktop.org逻辑。大概这是为了向后兼容性。如果你手动创建这个目录,Composer应该使用它

我不知道为什么这只是影响你的Ubuntu 16.04机器。我的旧笔记本电脑运行Ubuntu 14.04的变体,使用XDG_环境变量。

我怀疑你是在2015年7月添加freedesktop.org逻辑后第一次在那台机器上安装Composer,而你的其他机器在此之前都安装了Composer。然后他们现有的~/.composer/目录将确保Composer继续使用该位置。

相关内容

  • 没有找到相关文章

最新更新