Ich habe mich gefragt, ob es eine Konvention für Dateityp-Erweiterungen für Shell-Skripte gibt, die Sie anstelle der Ausführung als Quelle verwenden möchten. Beispielsweise:
Wenn ich dieses Skript in einer Subshell ausführen möchte.
./script.sh
Wenn ich daran denken möchte, dieses Skript von der aktuellen Shell aus auszuführen.
. script.source
Gibt es im zweiten Beispiel eine Konvention (wie zum Beispiel POSIX) für einen Dateityp? So etwas wie .source
oder .sourceme
?
Aktualisieren
Diese Frage fragt nicht nach einer Meinung. Ich habe klar gesagt, dass ich gerne wissen würde, ob es eine standardisierte Dateierweiterung für diese Art von Skripten gibt. Diese Frage basiert noch weniger auf Meinungen als diese gut aufgenommene Frage zu einem ähnlichen Thema ( Verwenden Sie die Erweiterung .sh oder .bash für Bash-Skripte? ).
quelle
#!/bin/sh
oder ähnlichem), keine Erweiterung haben sollten, da der Benutzer sich nicht darum kümmern sollte, in welcher Sprache das zugrunde liegende Skript geschrieben wurde.$PATH
, kommen Sie zu verwenden , die ganze Zeit, so sein wie,ps
,ls
,curl
und alle anderen Befehle, dann Sie beginnen zu bauen Shell Abschluss Funktionen drum herum, finde ich Es ist in Ordnung, die Erweiterung zu löschen. Aber ja, wenn Sie ein Shell-Skript beschaffen, das selbst nicht ausführbar ist, würde ich sie nicht verwendenchmod +x
und sie benennenscript.sh
. Außerdem weise ich oft eine Erweiterung nur zu, weil ich sonst keine Syntaxhervorhebung in meinem Editor bekomme.Antworten:
Ich würde
.sh
(für Dateien in der POSIX-sh
Sprache,.bash
für nicht sh-kompatiblebash
Dateien, dh die Erweiterung gibt die Sprache an, in der das Skript geschrieben ist) für Dateien verwenden, die bezogen werden sollen (oder allgemeiner nicht ausgeführt werden sollen)). und keine Erweiterung für Dateien, die ausgeführt werden sollen.Sie können auch Folgendes hinzufügen:
she-bang, so dass Sie bei einer versehentlichen Ausführung (obwohl ich erwarten würde, dass diese Dateien keine Ausführungsberechtigungen erhalten sollten, was die Ausführung bereits verhindern würde) eine Benachrichtigung erhalten, dass sie stattdessen bezogen werden sollten.
quelle
Im Fall von Quelldateien denke ich, dass der beste Weg .conf für Dateien ist, die Ihr Skript konfigurieren, und .shlib oder .shlibs für Dateien, die Funktionen oder andere Dienstprogramme haben.
Wenn Sie verhindern möchten, dass Ihr Skript mit der falschen Shell ausgeführt wird und Hashbang nicht ausreicht, können Sie Folgendes verwenden:
quelle
/proc/$$/exe
, können Sie dies genauso gut tuncase $(readlink "/proc/$$/exe") in */bash)...
, obwohl ich hier einfach Folgendes verwenden würde :if [ -z "$BASH_VERSION" ]
. (echo
sollte seinecho >&2
). (Ich mag Sie.conf
oder.shlibs
(aber für sh-Dateien) Erweiterungen, obwohl es möglicherweise nicht hilft, Textmarker zu syntaxieren, die auf der Erweiterung basieren).