为什么 COMPOSER_HOME 是空的?
Why is COMPOSER_HOME empty?
我有一个关于编程工具 composer 的问题,它作为可执行文件安装在 /usr/local/bin/composer
中,在我工作和家庭使用的 3 台不同机器上。根据:
composer help global
COMPOSER_HOME is c:\Users<user>\AppData\Roaming\Composer 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
变量?
我注意到这一点是因为我获取了我的公共点文件,其中包括全局作曲家 bin 路径。我知道我可以通过在我的 bashrc 中手动设置 COMPOSER_HOME
来解决这个问题,但我宁愿首先理解为什么会发生这种情况。
source code 揭示了 Composer 主目录计算方式的一些额外复杂性。
如果您的系统使用 freedesktop.org 标准,它通过查找 environment variables beginning with XDG_
来检测,那么 Composer 使用 $XDG_CONFIG_HOME/composer/
,如果不是,则回退到 $HOME/.config/composer/
设置。
您可能会对 special case 感兴趣:如果 $HOME/.composer/
存在并且是一个目录,它将支持 freedesktop.org 逻辑。大概这是为了向后兼容。如果您手动创建此目录,Composer 应该会使用它。
我不确定为什么这只会影响您的 Ubuntu 16.04 机器。我的旧笔记本电脑 运行 Ubuntu 14.04 的变体使用 XDG_
环境变量。
我怀疑您是在 freedesktop.org 逻辑 was added in July of 2015 之后在那台机器上第一次安装 Composer,并且您的其他机器在此之前都先安装了 Composer。然后他们现有的 ~/.composer/
目录将确保 Composer 继续使用该位置。
我有一个关于编程工具 composer 的问题,它作为可执行文件安装在 /usr/local/bin/composer
中,在我工作和家庭使用的 3 台不同机器上。根据:
composer help global
COMPOSER_HOME is c:\Users<user>\AppData\Roaming\Composer 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
变量?
我注意到这一点是因为我获取了我的公共点文件,其中包括全局作曲家 bin 路径。我知道我可以通过在我的 bashrc 中手动设置 COMPOSER_HOME
来解决这个问题,但我宁愿首先理解为什么会发生这种情况。
source code 揭示了 Composer 主目录计算方式的一些额外复杂性。
如果您的系统使用 freedesktop.org 标准,它通过查找 environment variables beginning with XDG_
来检测,那么 Composer 使用 $XDG_CONFIG_HOME/composer/
,如果不是,则回退到 $HOME/.config/composer/
设置。
您可能会对 special case 感兴趣:如果 $HOME/.composer/
存在并且是一个目录,它将支持 freedesktop.org 逻辑。大概这是为了向后兼容。如果您手动创建此目录,Composer 应该会使用它。
我不确定为什么这只会影响您的 Ubuntu 16.04 机器。我的旧笔记本电脑 运行 Ubuntu 14.04 的变体使用 XDG_
环境变量。
我怀疑您是在 freedesktop.org 逻辑 was added in July of 2015 之后在那台机器上第一次安装 Composer,并且您的其他机器在此之前都先安装了 Composer。然后他们现有的 ~/.composer/
目录将确保 Composer 继续使用该位置。