Como a outra resposta indica que você deve ser capaz de executar o comando diretamente do prompt do Cygwin bash. Mas se você estiver passando argumentos de arquivo / dir, os programas nativos do Windows esperarão um caminho nativo do Windows. Em vez de tentar construir esse caminho manualmente, você pode usar a ferramenta cygpath
:
# Emits, for example, 'C:\Program Files\MyApp\MyApp.exe'
cygpath --windows '/cygdrive/c/Program Files/MyApp/MyApp.exe'
Outra armadilha potencial a ter em conta é que você pode ter valores diferentes entre o Windows e o Cygwin para determinadas variáveis de ambiente comuns, como HOME ou TEMP. Este não é um problema tão comum, mas se você suspeitar que este pode ser o caso, passe a (s) definição (ões) do Windows antes do comando. Isso lançará o programa com um ambiente contendo o valor substituído. Por exemplo, TEMP é /tmp
no Cygwin, mas bem diferente no Windows, então se isso estiver causando problemas, você pode acabar com
algo como:
TEMP="$LOCALAPPDATA\Temp" MyApp.exe foo bar ...
Por fim, não se esqueça de citar quaisquer argumentos que contenham espaços incorporados neles.
Como uma nota lateral, eu tenho alguns scripts de wrapper que são alias para certos programas do Windows que me permitem inserir args estilo Cygwin. Os wrappers e, em seguida, usam algo como essa função para converter os argumentos no formato pronto do Windows antes de transmiti-los ao aplicativo nativo:
# Process positional params, converting file path to Windows format
# and adding quotes around other params if they contain spaces. Result
# saved in array named WINFILEARGS. Call Windows app with single
# arg "${WINFILEARGS[@]}"
make_win_file_args() {
declare -ga WINFILEARGS
local SPACEREGEX="[[:alnum:]]+[[:space:]]+[[:alnum:]]+"
local index=0
for posparam ; do
currparam="$posparam"
if [[ -e $currparam ]]; then
# Convert unix paths from command line to windows paths
currparam="\"$(cygpath -w "${posparam}")\""
elif [[ $currparam =~ $SPACEREGEX ]]; then
# Quote non-file parameters that contain spaces
currparam="\"${currparam}\""
fi
WINFILEARGS[$index]="$currparam"
(( index=$index+1 ))
done
}