No shell Bourne, não citar uma variável (ou seja, $var em vez de "$var" ) deve ser a exceção. O problema aqui é o seu comando echo . Com echo ? , ? é substituído por cada arquivo de uma letra em seu diretório, enquanto com echo "?" , o ponto de interrogação é exibido como está.
Sua função deve então ser:
parseGitBranch () {
gitBranch=staging
ifUntrackedFiles="$gitBranch ?"
echo "$ifUntrackedFiles"
}
E, como as aspas são fáceis de confundir com aspas simples e difíceis de aninhar, use $(...) :
PS1='$(parseGitBranch) $ '