2008-10-14 4 views
8

En el trabajo, uso Cygwin mucho porque me ofrece un pequeño oasis en el vasto desierto de Windows. Inevitablemente, termino ejecutando algunos programas que no son Cygwin a través del shell bash, como los scripts de compilación (archivos por lotes creados internamente) y los binarios de CLI de Subversion (tengo los de Windows instalados). 99% de las veces, no tengo ningún problema con esta configuración. El otro 1%, sin embargo, causa un problema extraño:tecla enter a veces no reconocida en las aplicaciones de Windows bajo cygwin

Con las secuencias de comandos de compilación y SVN, la mayoría de las veces la tecla enter se interpreta correctamente. Por ejemplo, iniciaré el script de creación de la base de datos y me solicitará el nombre del servidor. Tecleo "localhost" y presiono enter. Todo está bien. Luego llega al final, si hay errores, y se imprime usando more. Ninguna clave que presiono es reconocida por more. Tengo que Ctrl-C fuera de esto.

Del mismo modo, si hago una actualización de Subversion, normalmente todo está bien. Sin embargo, en el caso donde ocurre la resolución interactiva de conflictos, usualmente escribo "tf" para "theirs-full" y presiono enter, pero no pasa nada. Tengo que presionar Ctrl-C y volver a ejecutar la actualización con forzar combinación o usar TortoiseSVN en Windows para hacerlo.

¿Alguna idea de por qué Cygwin parece estar pasando aleatoriamente la tecla Entrar a través de los programas? Consideré que podría tener algo que ver con las terminaciones de línea estilo Unix vs Windows, así que intenté tipear esos caracteres manualmente, pero eso no parece marcar la diferencia. Gracias.

Editar: Me acaba de ocurrir esto y me di cuenta de algo. Fue SVN pidiéndome una contraseña. Escribí la contraseña, que hizo eco en la pantalla (mal) y presioné enter ... nothing. Presiona ingresar algunas veces más, el cursor se mueve, pero no pasa nada. Presiono Ctrl-C y me devuelve a bash, que dice "bash: [mi contraseña]: comando no encontrado" seguido de un número de nuevas solicitudes igual al número de veces que presiono la tecla enter. Entonces, ¿qué pasó? La entrada nunca llegó a SVN, pero de alguna manera fue leído por bash después de que SVN saliera. Pensé que eso podría ayudar a alguien a descubrir qué está pasando.

+0

Son ¿Estás seguro de que no se trata solo de la tecla Enter que está rota? :-) – JesperE

+0

Sí, estoy seguro. Funciona al 100% en todas las aplicaciones de Windows que se ejecutan fuera de Cygwin, y al 100% en las aplicaciones * nix dentro de Cygwin. Es solo una parte del tiempo cuando se usan aplicaciones de Windows dentro de Cygwin que falla. – rmeador

Respuesta

11

Lamentablemente, creo que está abordando uno de los problemas de las aplicaciones de consolas Cygwin y windows/dos. Consulte "Programas de consola" en http://www.cygwin.com/cygwin-ug-net/using-effectively.html.

Es solo una limitación en las aplicaciones de la consola de Windows. Este comportamiento es común para Windows myqsl cmd client y svn client, por ejemplo.

Aquí hay algunas cosas a tener en cuenta - he utilizado con éxito este enfoque tanto con el MySQL Windows, así como los clientes de Windows svn:

1) Trate de asegurarse de que no tengo "TTY" en su CYGWIN variable de entorno y vea si eso ayuda (desactívelo en Mi PC-> propiedades-> avanzado-> Variables de entorno y cierre/reinicie cualquier indicación de cygwin bash).

2) No utilice RXVT - en su lugar, use el indicador básico de Cygwin cmd. Esto se debe a que RXVT implica "tty" y romperá el n. ° 1 anterior.

3) Intente encontrar un paquete Cygwin "nativo" para los cmds con los que tiene problemas, en lugar de utilizar los cmds de Windows. (Sin embargo, todavía no he encontrado un cliente de 1.6 svn para cygwin.)

¡Buena suerte! Dustin

Cuestiones relacionadas