Является ли частью какого-либо стандарта (например, POSIX), что системные файлы должны быть в нижнем регистре?

29

Моя компания перепродает приложение с фирменным наименованием в смешанном регистре, например «ApplicationName».

Установщик приложения создает все пути и имена файлов в этом стандарте. Например, основной каталог /opt/ApplicationName, файл инициализации называется, ApplicationNameпоэтому я должен запустить service ApplicationName statusи так далее.

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

Если я расскажу об этом как об ошибке, я бы хотел привести более сильный аргумент, чем просто «я думаю, что это неправильно». Значит, в стандарте POSIX указано, что такие системные файлы должны быть в нижнем регистре?

Даррен
источник
9
Вы также можете указать, что это очень раздражает ваших клиентов, поскольку вы заставляете их использовать дополнительную кнопку (смена). Это может показаться не большим делом (хорошо, это не так), но это раздражает.
Terdon
5
Некоторые файловые системы нечувствительны к регистру, поэтому стоит указать на простую опечатку (например, некоторые пользовательские сценарии, ссылающиеся на файл с именем «applicationname» по ошибке), будут работать в некоторых системах, но не в других, проблема не будет решена немедленно и может быть дорогостоящим, чтобы найти позже. Более явное «application_name» менее вероятно, будет иметь эту проблему.
Стефан
11
Другой контрпример: все, что связано с X11, обычно имеет заглавную букву X в имени файла, например / usr / X11R6, /usr/lib/libX11.so и так далее.
кочевой тип
1
X хотел бы быть вашим исключением из тренд-доказательств сегодня.
StarWeaver
1
@nomadictype Помимо работы в системе Unix, система X Windows не имеет ничего общего со стандартом Unix POSIX.
Кусалананда

Ответы:

27

В стандарте POSIX есть раздел с рекомендациями для соответствующих утилит (т. Е. «Таких, которые написаны специально для локальной системы или являются компонентами более крупного приложения»), в которых говорится

  1. Названия утилит должны быть от двух до девяти символов включительно.
  2. Имена утилит должны включать строчные буквы (нижняя классификация символов) и цифры только из переносимого набора символов.

[ref: 12.2 Рекомендации по синтаксису утилит ]

Мне неясно, должно ли употребление слов «включать» действительно означает « только включать». (Консенсус в комментариях ниже заключается в том, что это означает «должен включать только»)

Приложение в системе Unix, которое не претендует на то, чтобы быть POSIX-совместимой утилитой, может иначе использовать любое имя, какое захочет. Если это так претендует на совместимом утилит POSIX , которая является частью утилита POSIX оболочки , текст после руководящих принципов в разделе 12.2 говорится , что «должны» изменения смысл «должны».

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

Кусалананда
источник
3
Я не думаю, что они на самом деле претендуют на совместимость с POSIX. Интересно, что имя приложения имеет длину 10 символов, поэтому они тоже не работают. Кстати, я читаю пункт 2 так: «он должен включать в себя только нижний регистр и цифры - я думаю, что окончательное« только »охватывает весь пункт. Может быть, вопрос для english.stackexchange.com :)
Даррен
3
XBD определяет shouldследующее: «Для реализации, которая соответствует стандарту IEEE Std 1003.1-XXXX, описывается функция или поведение, которое рекомендуется, но не обязательно. Приложение не должно полагаться на существование функции или поведения. Приложение, которое полагается на такое нельзя гарантировать, что функция или поведение будут переносимыми между соответствующими реализациями. Для приложения описывается функция или поведение, которое рекомендуется для программирования для оптимальной переносимости ».
fpmurphy
5
Имеет ли название приложения какое-либо отношение к именам системных утилит ?
Матти Вирккунен,
1
@IlmariKaronen Правильно. Руководящие принципы для реализации утилит описаны в самом стандарте.
Кусалананда
3
В предложении, которое вы цитировали, есть «только». Это происходит в неловком моменте во фразе, возможно, из-за редактирования комитета, но все равно имеет тот же эффект.
Хоббс
44

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

Фактически, исторически установленные пакеты программного обеспечения /optначинались с символа «все столицы», SUNWобозначающего акции компании, предоставляющей пакет, например, для Sun Microsystems или ORCLдля Oracle.

Таким образом, такие пакеты, как файловая система Sun QFS, будут установлены в каталоге с именем что-то вроде /opt/SUNWqfs.

Эндрю Хенле
источник
7
TIL это новый материал о биржевых тикерах. Upvoted. Спасибо.
Даррен
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» стали популярными благодаря взрыву в Вики, когда некоторые люди (например, я) использовали прописные буквы вместо дефисов или, что еще хуже, пробелы. Но это было через несколько лет после того, как Linux и подобные ОС стали популярными, с очень давними традициями Unix.

Эта традиция всегда была (есть) всегда простотой, а не только в соответствии с правилами, указанными Кусаланандой, даже сокращением слов, состоящих только из четырех-шести символов (например, /usr«пользователь», или /srv«служить», или /mnt«подключен»), и явно более длинные значения (/sbin для «суперпользовательских двоичных файлов»). В этой традиции прописные буквы заставляют вас нажимать клавишу Shift и, возможно, случайно также клавишу Caps Lock, просто зло.

В некоторой степени это удивительно, потому что Unixes в течение долгого времени могли писать чувствительные к регистру длинные имена файлов, в то время как MS-DOS / Windows ограничивалась нечувствительными к регистру короткими именами файлов (восемь символов плюс три для расширения), но быстро теряла эта простота («Программные файлы», «Мои документы» и т. д.), когда Windows 95 превосходит это ограничение.

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

Fran
источник
3
/usrне является сокращением для "пользователя". Это сокращение от «системный ресурс Unix»
fpmurphy
1
@ fpmurphy1, который пахнет как backronym.
Хоббс
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