
Comparatifs
Petites différences Cygwin/UNIX
Il ne faut pas oublier que Cygwin ne remplace pas Windows.
Il est obligé de prendre en compte le système de fichiers qui est propre a Windows.
C'est la cause de petites différences entre Cygwin et UNIX.
Chemins Windows et POSIX
Première différence avec UNIX, Cygwin, en plus de gérer les chemins POSIX (/), supporte aussi les chemins Windows (\).
Par contre, si on veut utiliser les '\' de Windows il faut les despécialiser. Cela donne '\\'.
Par exemple on peut taper cette commande : cd /usr\\local/bin
On arrivera bien dans le répertoire voulu.
Remarque : le fait de mettre des '\\' annule l'utilisation de l'autocompletion. C'est utile pour la compatibilité avec les programmes Win32 qui gèrent aussi bien les '/' (C ANSI) que '\\' (Win32).
Gestion de la casse
Il faut savoir aussi que Cygwin ne gère pas la casse, mais il la conserve.
C'est-à-dire que si on créé un fichier "toTo", le fichier sera visible sous Windows comme "toTo".
Si on fait vi Toto on editera le fichier "toTo". On ne peut pas avoir 2 fichiers avec le même nom dans le même répertoire.
Même s'ils n'ont pas la même casse.
Remarque : l'autocompletion tient compte de la casse. C'est-à-dire que cd /U[TAB] n'affichera rien alors que cd /u[TAB] completera "/usr/".
Gestion des fins de lignes
Depuis les dernières versions, on peut choisir si Cygwin créé par défaut des fichiers texte DOS qui ont pour caractère de fin de ligne : CRNL (Carriage Return - New Line : ^M\n),
ou bien des fichiers texte UNIX qui ont pour caractère de fin de ligne : NL (New Line : \n).
Cygwin fait la conversion à la volée des CRLN du DOS en NL de UNIX ou vice versa selon l'option demandée.
Cela peut poser des problèmes par exemple si on édite un fichier Makefile de Visual C++, Visual C++ ne le reconnaitra plus en tant que Makefile si il a été convertit avec Cygwin.
Il faut donc faire attention aux fichiers convertis par Cygwin.
Noms de fichiers interdits
Comme sous Windows, il est interdit de créer des fichiers avec certains noms spécifiques : CON, AUX, PRN...
Il est en effet impossible de créer des fichiers portant ce nom, car ce sont des noms utilisés par le DOS comme descripteurs de fichier pour l'ecran et l'imprimante par exemple.
Executions
Un fichier executable doit avoir, comme sous DOS/Windows une extension .bat, .com ou .exe.
On peut l'appeler en donnant le nom complet du fichier ou le nom sans l'extension :
./coin et ./coin.exe lancent tous deux le programme "coin.exe".
Par contre si le fichier s'appelle "coin", il n'est pas possible de l'executer :
./coin affiche une erreur "impossible de trouver coin.exe".
Remarque : un script shell n'a pas obligtoirement d'extension comme sous UNIX.
Gestions des droits
Le droit X ne sert à rien.
Il est positionné par défaut par GCC à la compilation, mais ne peut être retiré ni ajouté à la main.
De plus on peut executer un programme ou un script qui n'a pas le droit X.
Le droit R est lui aussi inactif. On ne peut pas le retirer. On ne peut donc pas interdire l'accès en lecture aux fichiers.
Le droit W lui est le seul vraiment utile et peut interdire l'écriture d'un fichier. En fait, il positionne le flag "read only" de Windows sur ce fichier.
Remarque : la gestion des droits est normalement un peu plus fine sous Windows NT, mais n'ayant pu la tester, je ne parle ici que de la gestion des droits sous Windows 9x.