De acordo com a página de download do Magento , na seção de patches
Faça o upload do patch no diretório raiz do Magento e execute o comando SSH apropriado: Para arquivos de patch com a extensão de arquivo `.sh: sh patch_file_name.sh Exemplo: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh
Magento recomenda uma invocação direta do sh
comando para executar seu patch runner. A extensão do arquivo também .sh
suporta isso.
No entanto, se você observar a parte superior de cada arquivo do patch runner , a linha shebang aponta para bash
.
#!/bin/bash
# Patch apllying tool template
# v0.1.2
# (c) Copyright 2013. Magento Inc.
#
O programador em mim quer confiar no arquivo de origem, mas o processo wonk quer obedecer ao que está escrito no site Magento, o cínico se pergunta se o patch foi testado contra as diferenças entre bash e sh .
REQUIRED_UTILS='sed patch'
tudo o que vejo nos.sh
scripts. Os documentos de atualização para versões recentes são como instruções estéreo e a atualização não deve ser tão dolorosa.Respostas:
Você deve usar o bash, na verdade. Na linha 14 do patch, você apontou explicitamente este código:
$((
é uma expressão aritmética válida em XCU sh, mas((
não é.)Em muitas plataformas do tipo UNIX, no entanto,
/bin/sh
é apenas um link simbólico para/bin/bash
. Quando invocado com o nomesh
, o bash desabilita parte de seu comportamento não-estrito POSIXly, mas não todo. É provável que esses patches funcionem bem para o bash chamado sh.fonte
chmod +x script && ./script
o kernel tentar executar o comando na linha shebang com o arquivo de script como seu primeiro ou segundo argumento. Dependendo das circunstâncias, não há garantia de que qualquer shell esteja envolvido nessa árvore de processos. Se você executarsh
com um script como argumento, no entanto, a linha shebang será ignorada.Caso isso ajude alguém no futuro, usei o Phpstorm para aplicar patches e sua ferramenta de patches é ótima. Demorou menos de 30 segundos para aplicar o patch sem problemas e você também pode ver e analisar as diferenças que os arquivos têm.
fonte