I terminali Cygwin non eseguono alcuni programmi Windows nativi


3

Per compatibilità con altri programmi Windows, devo installare la versione Windows di Mercurial (rispetto alla versione Cygwin), per Python, ecc.

Sfortunatamente, questi programmi Windows nativi sembrano avere problemi con l'input interattivo nelle shell Cygwin. Inoltre, alcuni programmi nativi non vengono nemmeno eseguiti (msysgit mi fa digitare "git.cmd" ogni volta anziché "git").

Non voglio passare da un terminale all'altro sempre. Qual è la soluzione alternativa migliore o il compromesso per questo problema?

Ho provato a impostare CYGWIN = notty come variabile d'ambiente ma questo non sembra aiutare neanche.

Grazie.

Risposte:


5

Dovrai utilizzare una console Cygwin (basata sulla console Windows standard) invece del terminale Cygwin predefinito.

Un modo per farlo è quello di creare un collegamento che invochi direttamente bash come shell di login, nel qual caso Windows crea automaticamente una finestra della console per esso. Ecco un comando per creare un tale collegamento sul desktop:

mkshortcut -D -n "Cygwin Console" -i /Cygwin.ico /bin/bash -a --login

Questa è la stessa shell che ho usato ma che ha problemi con alcune applicazioni Windows. :(
Jonathan Chan,

1
Devi distinguere tra il terminale / console, che è la cosa che mostra una finestra di testo, e la shell, che è la cosa che corre all'interno di quella finestra e che interpreta i comandi. Comunque, se stai già utilizzando la console, sono un po 'perplesso. Stai eseguendo lo schermo al suo interno? È CYGWINimpostato su ttyprima dell'avvio del processo Cygwin iniziale? Impostarlo su nottyall'interno di una sessione di Cygwin non farà differenza.
ak2,

Mi dispiace per quell'ambiguità, intendevo terminale. No, non eseguo lo schermo al suo interno. Ho impostato CYGWIN su tty al di fuori della sessione di Cygwin, ovviamente.
Jonathan Chan,

3
Quindi questo è il problema. L'impostazione CYGWINper ttypermette strato di Cygwin "dispositivo terminale pseudo" nella console, che vi dà più funcionality terminale Unix-compatibile (ad esempio, la possibilità di sospendere i processi con ^ Z). Tuttavia, questo si basa su pipe di Windows e significa che i programmi Windows nativi ottengono un handle di tubo in cui si aspettano un handle di console e i programmi interattivi spesso non funzionano come previsto con quelli.
ak2,

"I programmi Windows nativi ottengono un handle di pipe dove si aspettano un handle di console e i programmi interattivi spesso non funzionano come previsto con quelli." Penso che quello fosse il problema originale. : P Grazie comunque!
Jonathan Chan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.