O comando a seguir está iniciando em segundo plano o executável ls
passando directory
como seu argumento único, é o que você deseja fazer:
ls directory &
Esse está lançando ls
em segundo plano sem nenhum argumento e, em seguida, está (tentando) lançar directory
como um comando em primeiro plano, não é isso que você deseja fazer:
ls & directory
Usar um alias
não altera esse comportamento, a menos que cygwin
sh
tenha um recurso específico que não conheço, o que duvido muito.