Jef*_*ett 3 php bash composer-php ubuntu-16.04
我有一个关于编程工具的问题作曲家安装为一个可执行文件中/usr/local/bin/composer对我的工作和家庭之间使用3吨不同的机器.根据:
composer help global
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
当我跑:
composer global require <package>
Run Code Online (Sandbox Code Playgroud)
它/home/<user>/.config/composer/vendor/bin 仅安装在我的Ubuntu 16.04桌面上,但在其他任何地方安装都适当/home/<user>/.composer/vendor/bin
为什么安装~/.config而~/.composer不是设置COMPOSER_HOME变量?
我注意到这一点是因为我提供了包含全局作曲家bin路径的常见dotfiles.我知道我可以通过手动设置COMPOSER_HOME我的bashrc 来解决这个问题,但我宁愿理解为什么会发生这种情况.
在源代码中发现一些额外的复杂性作曲家的主目录是如何计算的.
如果你的系统使用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继续使用该位置.