GIT_DIR=$HOMEDIR/AppData/Local/GitHub/PortableGit*/bin
Acima do caractere curinga não é expandido, porque você está atribuindo a uma variável escalar que pode conter apenas uma cadeia de caracteres, por isso nenhuma divisão de palavras ou geração de nome de arquivo ocorre.
eval GIT_DIR_PASS=$GIT_DIR
Aqui, é um argumento para um comando simples, portanto os curingas são expandidos, mas seriam expandidos para arquivos cujo caminho é "GIT_DIR_PATH=..."
.
echo $GIT_DIR_PASS
Aqui, os curingas são expandidos. Você não está imprimindo o conteúdo da variável, mas a lista de argumentos que resultam da expansão desde a variável não é citada.
Você deseja:
set -- "$HOMEDIR"/AppData/Local/GitHub/PortableGit*/bin
Isso expande esse padrão para a lista de arquivos correspondentes e os atribui a $1
, $2
...
GIT_DIR=$1
Escolha o primeiro.