Cela fait-il partie d'une norme (par exemple POSIX), que les fichiers système doivent être en minuscules?

29

Mon entreprise revend une application dont le nom de marque est mixte, par exemple "ApplicationName".

Le programme d'installation de l'application crée tous les chemins et noms de fichiers dans cette norme. Par exemple, le répertoire principal est /opt/ApplicationName, le fichier init est appelé ApplicationNamedonc je dois exécuter service ApplicationName statuset ainsi de suite.

Pour moi, cela rompt toutes les conventions sensées et je pense que les fichiers et répertoires devraient tous être en minuscules (il existe un précédent dans d'autres applications telles que MySQL, dont les fichiers et les répertoires sont tous appelés mysql, même des applications comme Apache et Tomcat suppriment les précédentes). lettre majuscule).

Si je soulève cela comme un rapport de bogue, j'aimerais présenter un argument plus fort que simplement "je pense que c'est faux". Est-il donc dicté dans quelque chose comme la norme POSIX que les fichiers système comme celui-ci doivent être en minuscules?

Darren
la source
9
Vous pouvez également souligner que cela est extrêmement ennuyeux pour vos clients car vous les forcerez à utiliser un bouton supplémentaire (shift). Cela peut ne pas sembler être un gros problème (OK, ce n'est pas le cas) mais c'est ennuyeux.
terdon
5
Certains systèmes de fichiers ne respectent pas la casse, il serait utile de souligner une simple faute de frappe (par exemple, certains scripts utilisateur référençant le fichier par "nom d'application" par erreur) fonctionneraient sur certains systèmes mais pas sur d'autres, le problème ne serait pas détecté immédiatement et pourrait être coûteux à trouver plus tard. Un "nom_application" plus explicite est moins susceptible d'avoir ce problème.
Stefan
11
Autre contre-exemple: tout ce qui est lié à X11 a généralement un X majuscule dans son nom de fichier, par exemple / usr / X11R6, /usr/lib/libX11.so, etc.
nomadictype
1
X voudrait être votre exception qui fait ses preuves aujourd'hui.
StarWeaver
1
@nomadictype En plus de fonctionner sur un système Unix, le système X Windows a très peu à voir avec la norme Unix POSIX.
Kusalananda

Réponses:

27

La norme POSIX a une section avec des directives pour les utilitaires conformes (c'est-à-dire, "tels que ceux écrits spécifiquement pour un système local ou qui sont des composants d'une application plus grande") qui dit

  1. Les noms d'utilitaires doivent comprendre entre deux et neuf caractères, inclus.
  2. Les noms des utilitaires doivent inclure des lettres minuscules (la classification de caractères inférieure) et des chiffres uniquement du jeu de caractères portable.

[ref: 12.2 Consignes de syntaxe utilitaire ]

On ne sait pas pour moi si l'utilisation des mots « devrait inclure » signifie vraiment « devrait seulement inclure ». (Le consensus dans les commentaires ci-dessous est que cela signifie "ne devrait inclure que").

Une application sur un système Unix qui ne prétend pas être un utilitaire conforme POSIX peut autrement utiliser le nom qu'elle souhaite. Si elle ne prétend pas être un utilitaire conforme POSIX qui fait partie des utilitaires shell POSIX , le texte après les directives de l'article 12.2 indique que « devrait » modifications sens à « doit ».

Pour autant que je sache, il n'existe pas de directive similaire concernant les noms de répertoire. macOS (qui est un produit UNIX 03 certifié lorsqu'il s'exécute sur un ordinateur Mac à processeur Intel) utilise /Userscomme préfixe les répertoires personnels des utilisateurs, par exemple, ainsi qu'un certain nombre d'autres noms de répertoires à casse mixte.

Kusalananda
la source
3
Je ne pense pas qu'ils prétendent être conformes à POSIX n'importe où. Fait intéressant, le nom de l'application comporte 10 caractères, de sorte qu'ils échouent également sur ce front. BTW, la façon dont je lis le point 2 est "il ne devrait inclure que des minuscules et des chiffres - je pense que la finale" ne "couvre que la clause entière. Peut-être une question pour english.stackexchange.com :)
Darren
3
XBD définit shouldcomme suit: "Pour une implémentation conforme à la norme IEEE Std 1003.1-XXXX, décrit une fonctionnalité ou un comportement recommandé mais non obligatoire. Une application ne doit pas s'appuyer sur l'existence de la fonctionnalité ou du comportement. Une application qui s'appuie sur une telle une fonctionnalité ou un comportement ne peut être assuré d'être portable sur des implémentations conformes. Pour une application, décrit une fonctionnalité ou un comportement qui est une pratique de programmation recommandée pour une portabilité optimale. "
fpmurphy
5
La dénomination d'une application a-t-elle quelque chose à voir avec la dénomination des utilitaires système ?
Matti Virkkunen
1
@IlmariKaronen Correct. Les directives concernent l'implémentation des utilitaires décrits dans la norme elle-même.
Kusalananda
3
Il y a un "seulement" dans la phrase que vous avez citée. Cela arrive à un point gênant de la phrase, probablement en raison de la révision en comité, mais cela a toujours le même effet.
hobbs
44

Non, les noms en minuscules ne sont pas spécifiés pour les répertoires d'installation des packages logiciels.

En fait, historiquement, les progiciels installés dans ont /optcommencé avec le symbole boursier de toutes les capitales de la société fournissant le progiciel, comme SUNWpour Sun Microsystems ou ORCLpour Oracle.

Ainsi, des packages tels que le système de fichiers QFS de Sun seraient installés dans un répertoire nommé quelque chose comme /opt/SUNWqfs.

Andrew Henle
la source
7
TIL ce nouveau titbit sur les titres boursiers. A voté. Merci.
Darren
2
Je crois que cette convention ne s'appliquait qu'à SunOS / Solaris.
fpmurphy
3
@ fpmurphy1 Peut-être. Mais étant donné la façon dont Sun a traité la conformité POSIX, je doute que le schéma de dénomination qu'ils ont choisi violerait une partie de la norme. Je ne pense pas non plus que Sun aurait eu beaucoup de succès à convaincre Oracle d'utiliser n'importe quel schéma de dénomination.
Andrew Henle
1
@AndrewHenle, schéma de dénomination SMI pour SunOS / Solaris conforme aux normes et spécifications pertinentes. Les spécifications POSIX et Single Unix se définissent shouldessentiellementit is recommended
fpmurphy
les noms en majuscules se sentent juste granuleux et adoptés à partir d'un mainframe :)
rackandboneman
4

Outre les directives POSIX, je pense que cela pourrait avoir encore plus de poids dans la tradition des utilisateurs. Les noms de cas comme "ApplicationName" sont devenus populaires avec l'explosion des wikis, habituant certaines personnes (comme moi) à utiliser des majuscules au lieu des tirets, ou pire, des espaces. Mais c'était quelques années après que Linux et les systèmes d'exploitation similaires soient devenus populaires, avec une très longue tradition Unix derrière.

Cette tradition a été (est) toujours la simplicité, non seulement pour suivre les règles que Kusalananda a pointées, même en abrégeant des mots de quatre à six caractères seulement (par exemple, /usrpour "utilisateur", ou /srvpour "servir" ou /mntpour "monté") et des significations évidemment plus longues ( /sbinpour les "binaires superutilisateur". Dans cette tradition, en majuscules, vous forcer à appuyer sur la touche Maj, et peut-être accidentellement aussi sur la touche de verrouillage des majuscules, est tout simplement mauvais.

Dans une certaine mesure, cela est étonnant car Unixes a été pendant longtemps capable d'écrire des noms de fichiers longs sensibles à la casse, alors qu'en revanche, MS-DOS / Windows était limité aux noms de fichiers courts insensibles à la casse (huit caractères plus trois pour l'extension) mais a rapidement perdu cette simplicité ("Program Files", "My Documents", etc.) lorsque Windows 95 dépasse cette limitation.

Néanmoins, il existe aujourd'hui quelques exceptions comme le NetworkManagerdémon et nous verrons probablement plus de WikiWords à l'avenir. Mais nous détestons toujours la souris et écrivons dans les noms longs du terminal que vous ne pouvez terminer qu'avec l' TabTabautocomplétion. Ou quelqu'un voir un avantage renommant vimà VisualImproved?

Fran
la source
3
/usrn'est pas un raccourci pour "utilisateur". C'est un raccourci pour "ressource système Unix"
fpmurphy
1
@ fpmurphy1 qui sent comme un backronym.
hobbs
3
@ fpmurphy1 /usrétait à l'origine le répertoire contenant les répertoires personnels des utilisateurs (comme /homeaujourd'hui). Je suis d'accord avec Hobbs.
Fran
2
Sous Windows, ce My Computern'est pas et n'a jamais été un répertoire. C'est purement une construction shell; vous pouvez l'illustrer en considérant comment, dans une invite de commande ou dans une ancienne application Win16, vous y naviguerez. Program Filesest un gâchis qui lui est propre, avec son nom localisé; J'ai rencontré ce problème hier , littéralement , où un logiciel supposait le nom anglais de Program Filesmais le nom réel tel qu'il était utilisé était localisé sur le système. Probablement l'une des pires gaffes de Microsoft dans Windows 95.
un CVn du
@hobbs. @Fran Il suffit de faire un Internet pour /usret Unix System Resources Et, oui, dans les premières versions d'Unix, les répertoires personnels des utilisateurs vivaient également sous `/ usr '
fpmurphy