シェルスクリプトがソースにするファイル拡張子の公式の標準/規則


11

実行する代わりにソースしたいシェルスクリプトのファイルタイプ拡張子に規約があるかどうか疑問に思いました。例えば:

  1. このスクリプトをサブシェルで実行する場合。

    ./script.sh 
  2. 現在のシェルからこのスクリプトを実行することを覚えておきたい場合。

    . script.source 

2番目の例のファイルタイプには(POSIXなどの)規則がありますか?.sourceまたはのような何か.sourceme


更新

この質問はいかなる意見についても尋ねるものではありません。この種のスクリプトに標準化されたファイル拡張子があるかどうかを知りたいと明確に述べました。この質問は、同様の問題についてよく寄せられるこの質問よりも意見ベースではありません(bashスクリプトには.shまたは.bash拡張子を使用しますか?)。


1
一部の人々は(彼らはで始まる、すなわち、実行可能ファイルを実行することができるシェルスクリプトを考える#!/bin/shか、同様のユーザは、基礎となるスクリプトが書き込まれたどのような言語を気にする必要はありませんので、拡張子を持つべきではありません。
the_velour_fog

1
用途に応じて、env、rc、confなどを使用できます
123

1
それはあなたがthatsの有益な何かを構築し、中にそれを入れたら、時々 、依存123 @ $PATHそのような、ので、あなたは、すべての時間を使うようになってpslscurl、その後、あなたはその周りにシェル補完機能を構築するために開始し、他のすべてのコマンド、私は見つけます拡張機能を削除してもかまいません。しかし、はい、シェルスクリプトを調達しているときに、それ自体では実行できないchmod +x場合、私はそれらを使用せず、名前を付けますscript.sh。また、純粋に拡張子を割り当てることもよくあります。そうしないと、エディターで構文の強調表示が得られないためです。
the_velour_fog

5
慣習はありません。会社に所属している場合、または共有プロジェクト(オープンソースなど)で共同作業をしている場合は、ローカル標準に準拠する必要があるかもしれませんが、事実上の規則はありません。
スティーブンハリス

1
「慣習」という言葉(#2の意味)は、おそらく「意見に基づく」回答につながるものです。ソースオープングループ仕様では、命名基準は適用されません。
ジェフシャラー

回答:


18

私は.sh(POSIX sh言語のファイル、.bash非sh互換bashファイル、つまり拡張子がスクリプトが書かれている言語を識別するために)ソース(またはより一般的には実行されない)を意図したファイルに使用します実行されるファイルの拡張子はありません。

以下を追加することもできます。

#! /bin/echo Please-source

she-bangを使用すると、誤って実行された場合(これらのファイルに実行権限を与えてはならないはずですが、すでに実行を妨げているはずです)、代わりにソースにする必要があるという通知を受け取ります。


スクリプトが供給されていない場合にも、(終了できstackoverflow.com/q/2683279/4694621
はMateusz Piotrowski

4

ソースファイルの場合、最善の方法は、スクリプトを構成するファイルの.confと、関数または他のユーティリティを含むファイルの.shlibまたは.shlibsであると思います。

スクリプトが間違ったシェルで実行されるのを防ぎ、hashbangでは不十分な場合は、次のように使用できます。

if [ "$(readlink "/proc/$$/exe")" != "/bin/bash" ]; then
      echo >&2 "CAUTION: Wrong interpreter detected. You must use bash."
      exit 1
fi

1
Linux固有のを使用する/proc/$$/exe場合は、と同じように使用できますがcase $(readlink "/proc/$$/exe") in */bash)...、ここでは単純にを使用しますif [ -z "$BASH_VERSION" ]。(であるecho必要がありますecho >&2)。(私はあなた.confまたは.shlibs(shファイルの場合は)拡張機能が好きですが、拡張機能に依存する構文強調表示機能には役立ちません)。
ステファンChazelas

はい、ダウンロードしたある種のプログラムでこの.shlibを確認しましたが、覚えていません。そのため、これを使い始めました。ヒントをありがとうございました。readlinkバージョンで質問をより美しく編集します。;-)
Luciano Andress Martini

@StéphaneChazelas構文の強調表示は、ファイル自体のメタデータ(少なくともEmacsおよびVimの場合)によってトリガーされる可能性があるため、ファイル名拡張子の選択はその点では重要ではありません。
クサラナンダ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.