Czy to część jakiegokolwiek standardu (np. POSIX), że pliki systemowe powinny być pisane małymi literami?

29

Moja firma odsprzedaje aplikację, której nazwa firmowa ma różne litery, na przykład „ApplicationName”.

Instalator aplikacji tworzy wszystkie ścieżki i nazwy plików w tym standardzie. Np. Głównym katalogiem jest /opt/ApplicationNameplik inicjujący, ApplicationNamewięc muszę go uruchomić service ApplicationName statusi tak dalej.

Dla mnie to łamie wszystkie rozsądne konwencje i uważam, że wszystkie pliki i katalogi powinny być pisane małymi literami (istnieje precedens w innych aplikacjach, takich jak MySQL, których pliki i katalogi są wywoływane mysql, nawet aplikacje takie jak Apache i Tomcat usuwają poprzednie Wielka litera).

Jeśli podniosę to jako zgłoszenie błędu, chciałbym przedstawić silniejszy argument niż tylko „Myślę, że to źle”. Czy jest to podyktowane w standardzie POSIX, że pliki systemowe takie jak ten powinny być pisane małymi literami?

Darren
źródło
9
Możesz również zauważyć, że jest to wyjątkowo denerwujące dla Twoich klientów, ponieważ zmuszasz ich do korzystania z dodatkowego przycisku (shift). To może nie wydawać się wielkim problemem (OK, nie jest), ale jest denerwujące.
terdon
5
Niektóre systemy plików nie uwzględniają wielkości liter, warto wskazać prostą literówkę (np. Jakiś skrypt użytkownika odwołujący się do pliku pod „nazwą aplikacji” przez pomyłkę) działałby w niektórych systemach, ale nie w innych, problem nie zostałby natychmiast wykryty i znalezienie tego może być kosztowne. Bardziej wyraźna „nazwa_aplikacji” ma mniejsze prawdopodobieństwo wystąpienia tego problemu.
Stefan
11
Kolejny kontrprzykład: wszystko, co jest związane z X11, zwykle ma duże X w nazwie pliku, np. / Usr / X11R6, /usr/lib/libX11.so i tak dalej.
koczowniczy typ
1
X chciałby dziś być Twoim sprawdzającym się wyjątkiem.
StarWeaver
1
@nomadictype Oprócz działania w systemie Unix, system X Windows ma bardzo niewiele wspólnego ze standardem Unix POSIX.
Kusalananda

Odpowiedzi:

27

Standard POSIX zawiera sekcję ze wskazówkami dotyczącymi zgodnych narzędzi (tj. „Takich, które zostały napisane specjalnie dla systemu lokalnego lub są elementami większej aplikacji”), która mówi:

  1. Nazwy programów narzędziowych powinny zawierać od dwóch do dziewięciu znaków włącznie.
  2. Nazwy narzędzi powinny zawierać małe litery (niższa klasyfikacja znaków) i cyfry tylko z przenośnego zestawu znaków.

[ref: 12.2 Wytyczne dotyczące składni narzędzia ]

Nie jest dla mnie jasne, czy użycie słów „powinno obejmować” naprawdę oznacza „powinno obejmować tylko ”. (Konsensus w poniższych komentarzach jest taki, że oznacza to „powinien zawierać tylko”).

Aplikacja w systemie Unix, która nie twierdzi, że jest narzędziem zgodnym z POSIX, może w przeciwnym razie użyć dowolnej nazwy. Jeśli to ma roszczenie do bycia POSIX conformant narzędzie , które jest częścią narzędzi POSIX powłoki , tekst po wytycznymi zawartymi w rozdziale 12.2 mówi, że „powinien” zmienia sens „musi”.

O ile mi wiadomo, nie ma podobnych wytycznych dotyczących nazw katalogów. macOS (który jest certyfikowanym produktem UNIX 03, gdy działa na komputerze Mac z procesorem Intel) używa /Usersna przykład prefiksu katalogów domowych użytkownika, a także wielu innych nazw katalogów o różnej wielkości liter.

Kusalananda
źródło
3
Nie sądzę, żeby w ogóle twierdzili, że są zgodni z POSIX. Co ciekawe, nazwa aplikacji ma 10 znaków, więc zawodzą również na tym froncie. BTW, tak czytam punkt 2 „powinna ona zawierać tylko małe litery i cyfry - Myślę końcowego.«Tylko»obejmuje cały klauzuli Może to kwestia dla english.stackexchange.com :)
Darren
3
XBD definiuje shouldw następujący sposób: „W przypadku implementacji zgodnej z IEEE Std 1003.1-XXXX opisuje funkcję lub zachowanie, które jest zalecane, ale nie obowiązkowe. Aplikacja nie powinna polegać na istnieniu tej funkcji lub zachowania. Aplikacja, która polega na takich nie można zagwarantować, że funkcja lub zachowanie jest przenośne w różnych implementacjach zgodnych. W przypadku aplikacji opisuje funkcję lub zachowanie, które jest zalecaną praktyką programistyczną w celu zapewnienia optymalnego przenoszenia. ”
fpmurphy,
5
Czy nazywanie aplikacji ma coś wspólnego z nazywaniem narzędzi systemowych ?
Matti Virkkunen,
1
@IlmariKaronen poprawnie. Wytyczne dotyczą wdrażania narzędzi opisanych w samym standardzie.
Kusalananda
3
W cytowanym zdaniu jest „tylko”. Występuje w dziwnym punkcie tego zdania, prawdopodobnie z powodu edycji komitetu, ale nadal ma ten sam efekt.
hobbs
44

Nie, nazwy małych liter nie są określone dla katalogów instalacyjnych pakietów oprogramowania.

W rzeczywistości historycznie instalowane pakiety oprogramowania /optzaczynały się od symbolu giełdowego z wielkimi literami firmy dostarczającej pakiet, na przykład SUNWdla Sun Microsystems lub ORCLOracle.

Pakiety takie jak system plików QFS firmy Sun byłyby instalowane w katalogu o nazwie podobnej do /opt/SUNWqfs.

Andrew Henle
źródło
7
TIL ten nowy titbit o giełdach. Pozytywne. Dzięki.
Darren,
2
Uważam, że konwencja dotyczyła tylko SunOS / Solaris.
fpmurphy,
3
@ fpmurphy1 Być może. Biorąc jednak pod uwagę sposób, w jaki firma Sun traktowała zgodność z POSIX, wątpię, by wybrany przez nich schemat nazewnictwa naruszałby dowolną część standardu. Nie sądzę też, by Sun odniósł duży sukces w przekonaniu Oracle do użycia dowolnego schematu nazewnictwa.
Andrew Henle,
1
@AndrewHenle, schemat nazewnictwa SMI dla SunOS / Solaris jest zgodny z odpowiednimi standardami i specyfikacjami. Zarówno POSIX, jak i specyfikacja Single Unix definiują shouldsię jako zasadniczoit is recommended
fpmurphy
nazwy wielkich liter są po prostu szorstkie i adoptowane z komputera :)
rackandboneman
4

Oprócz wytycznych POSIX, myślę, że może to mieć jeszcze większy wpływ na tradycję użytkowników. Nazwy przypadków jako „ApplicationName” stały się popularne w eksplozji Wiki, przyzwyczajając niektórych ludzi (takich jak ja) do używania wielkich liter zamiast łączników lub, co gorsza, spacji. Ale to było kilka lat po tym, jak Linux i podobny system operacyjny stały się popularne, z bardzo długą tradycją uniksową.

Ta tradycja zawsze była (jest) zawsze prostą, nie tylko przestrzeganiem zasad, które wskazał Kusalananda, a nawet skrótem tylko słów składających się z czterech sześciu znaków (np. /usrDla „użytkownika”, /srv„serwowania” lub /mnt„montowania”) i oczywiście dłuższe znaczenie ( /sbindla „plików binarnych superużytkowników”). W tej tradycji wielkie litery zmuszają cię do naciśnięcia klawisza Shift, a być może przypadkowo także klawisz Caps Lock, jest po prostu zły.

W pewnym stopniu jest to zadziwiające, ponieważ Unixy od dłuższego czasu potrafią pisać duże nazwy plików z rozróżnianiem wielkości liter, podczas gdy MS-DOS / Windows był ograniczony do krótkich nazw plików bez rozróżniania wielkości liter (osiem znaków plus trzy dla rozszerzenia), ale szybko stracił ta prostota („Program Files”, „My Documents” itp.), gdy Windows 95 przekroczy to ograniczenie.

Niemniej jednak dzisiaj jest kilka wyjątków, takich jak NetworkManagerdemon i prawdopodobnie zobaczymy więcej WikiWords w przyszłości. Ale nadal nienawidzimy myszy i piszemy w terminalu długie nazwy, które można zakończyć tylko TabTabautouzupełnianiem. Czy ktoś zobaczyć niektóre zaletą zmiana nazwy vimna VisualImproved?

Fran
źródło
3
/usrnie jest skrótem od „użytkownika”. Jest to skrót od „Uniksowego zasobu systemowego”
fpmurphy 12.04.17
1
@ fpmurphy1, który pachnie jak backronym.
hobbs
3
@ fpmurphy1 /usrpierwotnie był katalogiem zawierającym katalogi domowe użytkownika (tak jak /homedzisiaj). Zgadzam się z Hobbsem.
Fran
2
W systemie Windows My Computernie jest i nigdy nie był katalogiem. Jest to konstrukcja czysto skorupowa; możesz to zilustrować, zastanawiając się, w jaki sposób, w wierszu polecenia lub w starej aplikacji Win16, do niej nawigować. Program Filessam w sobie jest bałaganem ze swoją zlokalizowaną nazwą; Ostatnio natknąłem się na ten problem dosłownie wczoraj , gdy oprogramowanie przybierało angielską nazwę, Program Filesale rzeczywista nazwa była używana w systemie. Prawdopodobnie jeden z najgorszych błędów Microsoftu w Windows 95.
CVn
@hobbs. @Fran Wystarczy zrobić Internetu za /usri Unix System Resources I tak, we wczesnych wersjach systemu Unix, użytkowników katalogi domowe żyli również pod `/ usr”
fpmurphy