明らかに、bin
ディレクトリ内の実行可能ファイルと編集可能な「ソース」ファイルにはいくつかの違いがあります。
- ソースファイルの場合、接尾辞を付けて何が何であるかを確認し、
#!
行のスキャンに失敗するインテリジェントでないツールを使用すると便利です。
- モジュールの場合、それらは、同じインタプリタ(または全くインタプリタ)を使用してすべてがプログラムの関連セットで使用している、含むことが一般的である
.pm
、.sh
または.so
そのようなケースです。
- 実行可能プログラムの場合、その名前は「プログラミング契約」の一部であり、ユーザーや他のスクリプトによって実行されます。実装が変わっても名前が変わらないことが重要です。したがって、明らかにファイル名には接尾辞を付けないでください
コンパイルされたプログラムの場合、「ソース」と「実行可能」の違いは明らかです。1つはソースコードを含み、もう1つは機械語または解釈されたバイトコードを含みます。スクリプトの場合、明らかな違いはありませんが、make
コマンドは「スクリプトのソースコード」と「スクリプトの実行可能バージョン」の概念的な分離を維持します。「シェルスクリプト」のデフォルトの「コンパイラ」は単純にcp
。
別の$HOME/source
ディレクトリを保持することをお勧めします。
- によって作成されたようなシンボリックリンクを保持し
ln -s ../source/foo.sh $HOME/bin/foo
ます。または
install -m 755 foo.sh ../bin/foo
; を使用して、変更(およびテスト)後に手動でコピーします。または
- 使用して
Makefile
からソースファイルをコピーする前に構文チェックを実行するためのルールを$HOME/source
に$HOME/bin
脚注:シェルスクリプトモジュールは、別のシェルスクリプトでのみ使用可能であり、.
またはsource
組み込みコマンドを使用してそのスクリプトの内部コンテキストを変更します。これは、(他のプログラムと同様に)別個のプロセスとして実行され、親プロセスを変更できない実行可能スクリプトとは異なります。大まかな慣習として、/usr/lib/name_of_program/name_of_module.sh
コマンドは/usr/bin/name_of_command
(サフィックスなしで)入るのに対してモジュールは入る。