这是 Symfony PHP 框架的bin/
目录,由于ls -la
某种原因,输出显示的是 bash 脚本而不是文件名。 Linux 版本是 Debian Stretch。
php composer.phar update
这是通过 Atlassian Pipelines 脚本运行命令的结果。如果手动运行相同的命令,则一切正常。 bitbucket-pipelines.yml 的相关部分看起来像
pipelines:
custom:
manual_preprod:
- step:
script:
- ssh $PREPROD_USER@$PREPROD_HOST -t "cd ${FULLPATH} && php composer.phar update"
我想 php Composer 中存在一个错误,导致它在创建符号链接时提供文件内容而不是文件名?这怎么可能?
该代码似乎来自作曲家的脚本之一, 二进制安装程序.php
编辑:
看起来这是一个 git + Windows 到 Linux 的问题。
这些文件被添加到 Windows 上的 git repo 中,在该系统下只是常规文件,内容如下
#!/usr/bin/env sh
dir=$(d=\${0%[/\\\\]*}; cd "\$d" > /dev/null; cd $binDir && pwd)
# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
# Cygwin paths start with /cygdrive/ which will break windows PHP,
# so we need to translate the dir path to windows format. However
# we could be using cygwin PHP which does not require this, so we
# test if the path to PHP starts with /cygdrive/ rather than /usr/bin
if [[ $(which php) == /cygdrive/* ]]; then
dir=$(cygpath -m "\$dir");
fi
fi
在 Debian Stretch 上发出命令后git pull
,这些文件变成了上面奇怪的符号链接,内容变成了目标文件的文件名。
答案1
您听起来好像已经在您的(全局或本地存储库)中core.symlinks
设置了。从:false
.gitconfig
git-config(1)
核心符号链接
如果false
,符号链接将作为包含链接文本的小型纯文件检出。 git-更新-索引(1) 和git 添加(1)不会将录制类型更改为普通文件。对于不支持符号链接的 FAT 等文件系统很有用。默认值为
true
,除了git 克隆(1) 或git初始化(1)core.symlinks false
在创建存储库时将探测并设置是否合适。
您可以通过运行以下命令来检查设置的状态:
git config core.editor