Eu resolvi isso enquanto isso, mas ainda não publiquei a solução - acabou sendo relacionada à sintaxe:
Soluções de trabalho:
function check_root {
stuff..
}
e
function check_root () {
stuff..
}
Por exemplo, remover o () da declaração da função ou garantir que ela seja separada por espaços em ambos os lados, corrige-a.
Aqui está o que eu encontrei na manchage bash que me fez identificar o erro:
Shell Function Definitions
A shell function is an object that is called like a simple command and executes a compound command with a new set of positional parameters. Shell functions are declared as follows:
name () compound-command [redirection]
function name [()] compound-command [redirection]
This defines a function named name. The reserved word function is optional. If the function reserved word is supplied, the parentheses are optional
Mas ... eu não tenho idéia do que exatamente faz o bash se comportar dessa maneira neste caso.