Parece que esse código é onde está o problema:
test-host: @if [ $$EUID -ne 0 ] ; then \ echo "You must be logged in as root." && exit 1 ; fi @if ! type -p gawk >/dev/null 2>&1 ; then \ echo -e "Missing gawk on host!\nPlease install gawk and re-run 'make'." && exit 1 ; fi
Quando o primeiro if …
é executado, a variável EUID
não está definida, portanto, o comando [ -ne 0 ]
é executado e esta não é uma sintaxe válida para o utilitário [
. Quando o segundo if …
for executado, o comando type -p gawk
será executado e retornará um status com falha, mesmo que gawk
exista, indicando que PATH
não está configurado corretamente ou que o comando type
não está configurado t suporta a opção -p
. (Spoiler: é o último.) E a mensagem de erro tem -e
no início, mostrando que echo
não reconhece -e
como uma opção.
Esse makefile conta com recursos bash: EUID
, echo -e
e type -p
são recursos bash. O sh
do seu sistema é traço, não bash (o traço é o padrão no Debian e check-version.sh
confirma que /bin/sh
é traço). Dash é um shell mais enxuto e rápido que o bash; não tem muito mais do que o POSIX requer, e isso não inclui EUID
ou type -p
. Eu não passei pelo makefile, mas provavelmente há muito mais lugares onde é necessário bash.
Como o makefile requer o bash, ele deve conter uma linha com SHELL = bash
. Na ausência de tal linha, diga make para usar o bash como o shell para todos os comandos: run
make SHELL=/bin/bash