Вы могли, конечно, переделать это так, чтобы это работало на любую данную папку или набор файлов, но сначала необходимо понять причину, это не делает этого теперь.
На Linux расширения файла не имеют значения, единственная вещь, которая вопросы является выполнить битом. Вещи могут быть выполнены, действительно ли они двоичные или просто текст в форме сценария. Ваши критерии "не двоичные файлы" не совпадают хорошо с отличиями, сделанными Linux о том, что файл или нет.
Это сказанное не было бы слишком трудно записать пользовательскую функцию завершения для замены завершения шарика имени файла для данной команды, которая перечислит все файлы, но исключит тех, которые имеют '.c' версии. Требовались бы немного служебные, который замедлит заполнение клавишей Tab немного.
Что касается значения каталога /bin
, процитируем источник страницы руководства intro(0) из моментального снимка Unix Research V3. доступен на github и в других местах:
Commands generally reside in directory /bin____ (for
bin___ary programs).
Этот же текст появляется в The Unix Programmer's Manual (неявно первое издание), в Introduction , от 1971 года.
Насколько Я могу сказать, что в ранней Unix не было пользовательских команд, представленных в виде сценариев, и только в V6 два сценария впервые появились в /usr/bin
, к тому времени соглашение о поиске /bin
] и /usr/bin
для команд были очень хорошо установлены, и поэтому это было бы естественным местом для их размещения — никогда не было необходимости отделять их от «двоичных файлов», и до сих пор нет .
По моему мнению, bin
средства что-то больше вроде "исполняемого файла", чем строго "двоичный". (В конце все файлы являются двоичными.) Существует довольно много файлов сценария даже в /bin
; в моей системе Debian, file /bin/* | grep -c 'shell script'
говорит, что тут же существует 19 сценариев оболочки. При нахождении в/usr/bin у меня есть еще 325 сценариев оболочки.
Если Ваш сценарий применим, как будто это было скомпилированное приложение, просто отбросьте его в соответствующем bin
каталог, как это - то, где люди ожидали бы находить его. Если это - простой сценарий помощника, может быть лучше поместить его в отдельный каталог, только подчеркнуть, что это не действительно собственное приложение.
В более ранние времена Unix, /bin
каталог только содержал скомпилированные двоичные файлы. Сценарии появились туда позже. По крайней мере, от версии 7, которая представила #! interpreter
конвенция, но вероятно позже.
Относительно причины, почему это называют тем путем, и почему не, /exec
или некоторое другое имя, все это идет путем назад к старым и ранним дням Unix, где у людей был выбор выбрать очень хромые имена, как использовался только в стадиях разработки и не помещал очень мысль, которая в Unix ближайшего будущего будет повсеместным выбором для вычислений затем. Linux, который взял побеждающую сторону и нес наследие стиля Unix как OSs (считал реализации стиля POSIX), также несколько стал влиявшим в областях спецификаций файловой системы и стандартов. Однако скоро в развивающиеся времена Linux, поскольку это получало широкое принятие, стандарты, характерные для Linux, начали появляться в изображение. Среди стандартов, Файловой системы Linux стандартов Hieararchy (LFHS), описывает потребность организовать системную иерархию файловой системы и местоположения именования в иерархии дерева файловой системы.
Насколько иерархия файловой системы Linux идет, и документация спецификации проекта FHS по http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/
/ каталог bin содержит несколько полезных команд, которые полезны для обоих системный администратор, а также непривилегированные пользователи. Это обычно содержит оболочки как удар, csh, и т.д..... и наиболее часто используемые команды как CP, mv, комната, кошка, ls. Поэтому и в отличие от/usr/bin, двоичные файлы в этом каталоге считаются важными. Причина этого состоит в том, что это содержит существенные системные программы, которые должны быть доступными, даже если только раздел, содержащий/, смонтирован. Эта ситуация может возникнуть, должен, необходимо восстановить другие разделы, но не иметь никакого доступа к общим каталогам (т.е. Вы находитесь в однопользовательском режиме и следовательно не имеете никакого доступа к сети). Это также содержит программы, которые загружаются, сценарии могут зависеть от.
Так, не необходимо, чтобы они были двоичными исполняемыми файлами (файлы ELF), но также и сценарии, которые являются исполняемым файлом и важны для системного функционирования, которое может войти в / каталог bin.
Кроме того, я хочу отметить здесь, что эти стандарты существовали, я предполагаю, почти больше 30 лет. В быстро изменяющиеся времена люди могут идти с новыми стандартами, которые могли бы полностью удалить текущие нотации, используемые в иерархии. Один из недавних такое животное онлайн objectRoot
, который является недавно опубликованным предложением перепроектировать и удалить неудобства иерархии. Для получения дополнительной информации: http://objectroot.org/root/