Моя компания перепродает приложение, название бренда которого состоит из букв разного регистра, например «ApplicationName».
Установщик приложения создает все пути и имена файлов в этом стандарте. Например, главный каталог — /opt/ApplicationName
, файл init называется , ApplicationName
поэтому мне нужно запустить service ApplicationName status
и т. д.
На мой взгляд, это нарушает все разумные соглашения, и я считаю, что все файлы и каталоги должны быть в нижнем регистре (есть прецедент в других приложениях, таких как MySQL, в которых все файлы и каталоги называются mysql
, даже такие приложения, как Apache и Tomcat, отказываются от предшествующей заглавной буквы).
Если я подниму это как отчет об ошибке, я хотел бы выдвинуть более веский аргумент, чем просто "Я думаю, что это неправильно". Так предписано ли в чем-то вроде стандарта POSIX, что системные файлы, подобные этому, должны быть в нижнем регистре?
решение1
Нет, для каталогов установки пакетов программного обеспечения имена в нижнем регистре не указываются.
Фактически, исторически пакеты программного обеспечения, установленные в, /opt
начинались с биржевого символа компании, предоставившей пакет, состоящего из заглавных букв, например, SUNW
Sun Microsystems или ORCL
Oracle.
Поэтому такие пакеты, как файловая система QFS от Sun, будут установлены в каталоге с именем вроде /opt/SUNWqfs
.
решение2
В стандарте POSIX есть раздел с рекомендациями посоответствующие коммунальные услуги(т.е. «такие, которые написаны специально для локальной системы или являются компонентами более крупного приложения»), который гласит:
- Названия утилит должны содержать от двух до девяти символов включительно.
- Названия утилит должны включать строчные буквы (классификация символов нижнего регистра) и цифры только из переносимого набора символов.
[ссылка:12.2 Правила синтаксиса утилит]
Мне неясно, означает ли использование слов «должны включать» на самом деле «должнытольковключить». (В комментариях ниже единодушное мнение, что это означает «следует только включить»).
Приложение в системе Unix, которое не претендует на то, чтобы быть утилитой, соответствующей POSIX, может в противном случае использовать любое имя, которое оно хочет. Если оноделаетпретендует на звание утилиты, соответствующей стандарту POSIXкоторая является частью утилит оболочки POSIX, текст после указаний в разделе 12.2 гласит, что «should» меняет значение на «shall».
Насколько мне известно, подобных рекомендаций относительно имен каталогов не существует. macOS (котораясертифицированный продукт UNIX 03при запуске на компьютере Mac на базе Intel) используется /Users
в качестве префикса, например, для домашних каталогов пользователя, а также для ряда других имен каталогов в смешанном регистре.
решение3
Помимо указаний POSIX, я думаю, что это могло бы иметь еще больший вес в пользовательской традиции. Имена регистров, такие как "ApplicationName", стали популярными с взрывом Wiki, приучая некоторых людей (вроде меня) использовать заглавные буквы вместо дефисов или, что еще хуже, пробелов. Но это было через несколько лет после того, как Linux и подобные ОС стали популярными, с очень давней традицией Unix позади.
Эта традиция всегда была (есть) простотой, не только следовать правилам, на которые указал Кусалананда, даже сокращать слова только из четырех-шести символов (например, /usr
для «пользователь», или /srv
для «обслуживать», или /mnt
для «монтируемый») и, очевидно, более длинных значений ( /sbin
для «двоичные файлы суперпользователя»). В этой традиции заглавные буквы, заставляющие вас нажимать клавишу Shift, а может быть, и случайно клавишу Caps Lock, являются просто злом.
В какой-то степени это удивительно, поскольку Unix-системы долгое время могли записывать длинные имена файлов с учетом регистра, в то время как MS-DOS/Windows, напротив, были ограничены короткими именами файлов без учета регистра (восемь символов плюс три для расширения), но быстро потеряли эту простоту («Program Files», «My Documents» и т. д.), когда Windows 95 преодолела это ограничение.
Тем не менее, сегодня есть несколько исключений, таких как NetworkManager
демон, и, вероятно, в будущем мы увидим больше WikiWords. Но мы все еще ненавидим мышь и пишем в терминале длинные имена, которые можно закончить только автодополнением TabTab. Или кто-то видит какие-то преимущества в переименовании vim
в VisualImproved
?