Чи є частиною будь-якого стандарту (наприклад, POSIX), що системні файли мають бути малими літерами?


29

Моя компанія перепродує додаток, назва бренду якого є змішаним регістром, наприклад "ApplicationName".

Інсталятор програми створює в цьому стандарті всі шляхи та імена файлів. Наприклад, головний каталог - /opt/ApplicationNameце файл init, ApplicationNameтому я маю запустити service ApplicationName statusі так далі.

Для мене це порушує всі розумні умови, і я вважаю, що всі файли та каталоги мають бути малими літерами (у інших програмах, таких як MySQL, прецедент яких є прецедентом, чиї файли та режими називаються mysql, навіть такі програми, як Apache та Tomcat, відмовляються від попередніх прописна літера).

Якщо я ставлю це як повідомлення про помилку, я хотів би викласти більш сильний аргумент, ніж просто "Я думаю, що це неправильно". Тож чи продиктовано щось на кшталт стандарту POSIX, що системні файли на зразок цього мають бути малими літерами?


9
Ви також можете вказати, що це дуже дратує ваших клієнтів, оскільки ви будете змушувати їх використовувати додаткову кнопку (shift). Це не може здатися великою справою (гаразд, це не так), але це дратує.
тердон

5
Деякі файлові системи нечутливі до регістру, варто вказати на простий друкарський помилок (наприклад, якийсь користувацький скрипт, що посилається на файл із "ім'ям програми" помилково), працюватиме в деяких системах, але не в інших, питання не буде вирішено негайно. може бути дорого знайти пізніше. Більш чітка "ім'я_прикладки" має меншу ймовірність виникнення цієї проблеми.
Стефан

11
Ще один контрприклад: все, що стосується X11, зазвичай має назву X у своєму файлі, наприклад / usr / X11R6, /usr/lib/libX11.so тощо.
кочовий тип

1
X хотів би бути сьогодні вашим винятком, що підтверджує тенденцію.
StarWeaver

1
@nomadictype Окрім роботи в системі Unix, система X Windows має дуже мало спільного зі стандартом Unix POSIX.
Kusalananda

Відповіді:


27

Стандарт POSIX містить розділ із вказівками щодо відповідності утиліт (наприклад, "таких, які написані специфічно для локальної системи або є компонентами більшого додатка"), який говорить

  1. Імена утиліт повинні містити від двох до дев'яти символів включно.
  2. Імена утиліти повинні включати малі літери (нижня класифікація символів) та цифри лише з портативного набору символів.

[посилання: 12.2 Правила синтаксису утиліти ]

Мені незрозуміло, чи має вживання слова "включати" справді означає "має включати лише ". (Консенсус у коментарях нижче полягає в тому, що це означає "слід включати лише").

Додаток у системі Unix, який не претендує на утиліту, сумісну з POSIX, може інакше використовувати будь-яку назву. Якщо це дійсно претендує на сумісному утиліт POSIX , яка є частиною утиліта POSIX оболонки , текст після керівних принципів в розділі 12.2 говориться , що «повинні» зміни сенс «повинні».

Наскільки я не знаю, немає подібних рекомендацій щодо імен каталогів. macOS (який є сертифікованим продуктом UNIX 03 під час роботи на комп'ютері на базі Intel Intel) використовує, наприклад /Users, префікс для домашніх каталогів користувача, а також ряд інших імен змішаних регістрів.


3
Я не думаю, що вони насправді претендують на сумісність з POSIX. Цікаво, що ім'я програми - 10 символів, тому вони не виходять з цього фронту. До речі, як я читаю пункт 2, це "він повинен містити лише малі регістри та цифри. Я думаю, що остаточне" лише "охоплює весь пункт. Можливо, питання для english.stackexchange.com :)
Даррен

3
XBD визначає shouldтак: "Для реалізації, яка відповідає IEEE Std 1003.1-XXXX, описується функція або поведінка, які рекомендуються, але не є обов'язковими. Програма не повинна покладатися на існування функції або поведінки. Додаток, який покладається на таке функція чи поведінка не можуть бути впевнені, що вони переносяться у відповідних реалізаціях. Для програми описується функція або поведінка, яка рекомендується практикувати програмування для оптимальної переносимості. "
fpmurphy

5
Чи називання програми має щось спільне з іменуванням системних утиліт ?
Матті Вірккунен

1
@IlmariKaronen Правильно. Вказівки стосуються впровадження утиліт, описаних у самому стандарті.
Kusalananda

3
У цитованому реченні є "тільки". Він приходить в незручний момент у фразі, ймовірно, через редагування комітету, але він все одно має той же ефект.
варення

44

Ні, назви малих регістрів не вказані для каталогів установки програмного пакету.

Насправді, історично встановлені програмні пакети /optрозпочалися із символу загальної кількості капіталів компанії, що постачає пакет, наприклад, SUNWдля Sun Microsystems або ORCLдля Oracle.

Таким чином, такі пакунки, як файлова система QFS Sun, будуть встановлені в каталозі з назвою щось подібне /opt/SUNWqfs.


7
TIL цей новий тибіт про біржові тикери. Отримано. Спасибі.
Даррен

2
Я вважаю, що конвенція застосовується лише до SunOS / Solaris.
fpmurphy

3
@ fpmurphy1 Можливо. Але з огляду на те, як Sun ставився до відповідності POSIX, я сумніваюся, що обрана ними схема назви порушить будь-яку частину стандарту. Я також не думаю, що Sun би не мав великих успіхів у переконанні Oracle використовувати будь-яку схему іменування.
Ендрю Генле

1
@AndrewHenle, схема іменування SMI для SunOS / Solaris відповідає відповідним стандартам та технічним умовам. І специфікація POSIX та Single Unix визначають shouldпо сутіit is recommended
fpmurphy

Імена верхнього регістру просто почуваються ситими та прийнятими від мейнфрейму :)
rackandboneman

4

Окрім рекомендацій POSIX, я думаю, що це може мати ще більшу вагу традицій користувача. Назви випадків як "ApplicationName" стали популярними під час вибуху Wikis, звикаючи деяких людей (як я) використовувати великі літери замість дефісів або, що ще гірше, пробіли. Але це було через кілька років після того, як Linux та подібні ОС стали популярними, з дуже довгими традиціями Unix.

Ця традиція була (є) завжди простотою, а не лише дотриманням правил, на які вказував Кусалаланда, навіть скороченням слів лише чотирьох-шести символів (наприклад, /usrдля "користувача", або /srv"служити" або /mnt"встановлено") і очевидно, довші значення ( /sbinдля "суперпользовательских бінарних файлів". У цій традиції великі регістри змушують натискати клавішу Shift, а може, і випадково також клавішу Caps Lock - просто зло.

У певній мірі це дивно, тому що Unixes вже давно може записати великі регістри довгих імен файлів, в той час як MS-DOS / Windows обмежувався нечутливими короткими файлами файлів (вісім символів плюс три для розширення), але швидко втрачався ця простота ("Файли програм", "Мої документи" тощо), коли Windows 95 перевершує це обмеження.

Тим не менш, сьогодні є кілька винятків, як NetworkManagerдемон, і, мабуть, ми побачимо більше WikiWords у майбутньому. Але ми все одно ненавидимо мишку і записуємо в термінал довгі імена, які можна закінчити лише TabTabавтозавершенням. Або хто - то побачити деяку перевагу перейменування vimв VisualImproved?


3
/usrне є скороченням для "користувача". Це скорочення для "
Системного

1
@ fpmurphy1, що пахне заднім словом.
варення

3
@ fpmurphy1 /usrспочатку був каталогом, який містив домашні каталоги користувачів (як /homeсьогодні). Я погоджуюся з варенням.
Фр

2
У Windows My Computerне є та ніколи не був каталогом. Це суто оболонкова конструкція; ви можете проілюструвати це, розглядаючи, як ви в командному рядку або в старому стилі програми Win16 переходите до нього. Program Filesце безлад все своє, з локалізованою назвою; Я зіткнувся з цим питанням зовсім недавно буквально вчора , коли частина програмного забезпечення передбачала англійську назву, Program Filesале власне ім'я, як воно було, було локалізовано в системі. Ймовірно, один із найгірших помилок Microsoft в Windows 95.
CVn

@hobbs. @Fran Просто зробіть Інтернет для /usrі. Unix System Resources Так, у ранніх версіях Unix домашні каталоги користувачів також жили під `/ usr '
fpmurphy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.