Мне было интересно, существует ли соглашение для расширений типов файлов для сценариев оболочки, которые вы хотите использовать вместо запуска. Например:
Если я хочу запустить этот скрипт в подоболочке.
./script.sh
Если я хочу не забыть запустить этот скрипт из текущей оболочки.
. script.source
Есть ли соглашение (например, POSIX) для типа файла во втором примере? Что-то вроде .source
или .sourceme
?
Обновить
Этот вопрос не задает ни о каком мнении. Я четко заявил, что хотел бы знать, существует ли стандартизированное расширение файла для этого вида сценариев. Этот вопрос еще менее основан на мнениях, чем этот хорошо принятый вопрос по аналогичной проблеме ( Использовать расширение .sh или .bash для скриптов bash? ).
shell-script
shell
standard
conventions
Матеуш Пиотровский
источник
источник
#!/bin/sh
.$PATH
, вы пришли , чтобы использовать все время, так что его , как,ps
,ls
,curl
и все другие команды, то вы начинаете функции завершения сборки оболочки вокруг него, я считаю , это нормально, чтобы удалить расширение. Но да, когда вы создаете сценарий оболочки, который сам по себе не является исполняемым, я бы неchmod +x
стал его называтьscript.sh
. также я часто назначаю расширение просто потому, что если я не сделаю этого, я не получу подсветку синтаксиса в моем редакторе.Ответы:
Я бы использовал
.sh
(для файлов наsh
языке POSIX ,.bash
для несовместимых с shbash
файлов, то есть расширение идентифицирует язык, на котором написан скрипт) для файлов, предназначенных для получения (или, в более общем случае, не предназначенных для выполнения), и нет расширения для файлов, которые должны быть выполнены.Вы также можете добавить:
она вздохнула, так что при исполнении по ошибке (хотя я ожидаю, что этим файлам не должны быть предоставлены разрешения на выполнение, которые уже будут препятствовать выполнению), вы получите уведомление о том, что он должен быть получен вместо этого.
источник
Что касается исходных файлов, я думаю, что лучший способ - это .conf для файлов, которые настраивают ваш скрипт, и .shlib или .shlibs для файлов, которые имеют функции или другие утилиты.
Если вы хотите запретить запуск сценария с неверной оболочкой, и вам не достаточно hashbang, вы можете использовать это:
источник
/proc/$$/exe
, вы можете также сделать это какcase $(readlink "/proc/$$/exe") in */bash)...
, хотя здесь, я бы просто использовать:if [ -z "$BASH_VERSION" ]
. (echo
должно бытьecho >&2
). (Мне нравятся вы.conf
или.shlibs
(но для sh-файлов) расширения, хотя это может не помочь подсветкам синтаксиса, которые полагаются на расширение).