Você tem que citar o parâmetro $ dir, caso contrário você pode estar dando mais de duas strings como argumentos para cygpath (1st -wa, 2nd / path /). Isso será um problema somente quando o parâmetro $ dir contiver um diretório cujo caminho contenha espaços.
I.E.
cygpath -wa "~/x/hello world"
não é o mesmo que
cygpath -wa ~/x/hello world
Isso deve funcionar para você (como aconteceu comigo):
jaroslav@wraptor ~
$ function winPath { cygpath.exe -wa -- "$1"; }
$ FreeCommander.exe C: "$(winPath /cygdrive/m/muzica/_christian_liturgy/\
Athonite\ Fathers\ of\ St.\ Anthony\'s\ Greek\ Orthodox\ Monastery\ -\ \
Vigil\ of\ St.\ Anthony/)"