Esta é uma limitação do bash. Citando o manual:
The rules concerning the definition and use of aliases are somewhat confusing.
O Bash expande os aliases quando lê um comando. Um comando, nesse sentido, consiste em comandos completos (todo o bloco if … fi é um comando composto) e linhas completas (portanto, se você escreveu … fi; WeirdTest em vez de colocar uma nova linha após fi , a segunda ocorrência de WierdTest não seria expandido também). Em seu script, quando o comando if está sendo lido, o WeirdTest alias ainda não existe.
Uma solução possível é definir uma função:
if …; then
WeirdTest () { uptime; }
WeirdTest
fi
WeirdTest
Se você quiser usar um alias para poder chamar um comando externo com o mesmo nome, você pode fazer isso com uma função adicionando command antes.
WeirdTest () { command WeirdTest --extra-option "$@"; }