回答
.sh
と呼ぶのはポータブルであることが意味です(そしてできればポータブルである)。
それ以外の場合は、言語を非表示にする方が良いと思います。注意深い読者はとにかくそれをシバン行で見つけてください。(実際には、.bash
または.zsh
など…サフィックスはめったに使用されません。)
コメント
回答
厳密に言えば、ファイル拡張子の「グッドプラクティス」は存在しないと思います。Unix/ Linux / * BSDファイルシステムはそうではありません。拡張機能自体をサポートします。拡張機能と呼んでいるのは、単一のファイル名のサフィックスにすぎません。これは、VM / CMS、VMS、MS-DOS、Windowsファイルシステム、およびLinuxの特別な場所にあるOSとは異なります。道徳的同等物は拡張子のために予約されています。
その小さな怒りは、シェルに「.sh」または「.ksh」または「.bash」サフィックスを付けるのは少しばかげていると思いますスクリプトファイル名。プログラムはプログラムです。何が実行されるかを区別するメリットはありません。UNIXやLinuxなど、ファイル名の拡張子だけでインタープリターを呼び出すことを決定したカーネルはありません。すべて、 #!
行、またはその他の「マジックナンバー」のバイトシーケンスファイルの先頭。実際、ファイル名「拡張子」に基づいて何を実行するかを決定することは、Windowsをマルウェアの魅力にする要因の1つです。 「something.jpg.exe」という名前のファイルが関係するWindowsマルウェア詐欺の数を確認します。デフォルトでは、新しいWindowsには「.exe」拡張子が表示されず、ユーザーに「画像」をダブルクリックするように促します。イメージビューが実行されていると、マルウェアが実行されます。
とにかく、ストレートアヘッドコマンドと考えるのはシェルスクリプトであることがよくあります。cc
がsh-script、firefox
はsh-script、startx
はsh-scriptです。私はそこに「信じられない」、認知的またはスクリプトに「.sh」拡張子を付けることによる組織的なメリット。
コメント
)ですが、Windowsが通常その拡張機能を非表示にするという事実と、実行可能ファイルを開始してドキュメントを開くために必要なアクションはまったく同じです。
回答
多くのLinux環境で働いてきた私は、さまざまな種類の文書を作成する必要がありました。シェル。信じられないかもしれませんが、プラットフォーム間で、シェルは同じではありません。したがって、個人ライブラリを複数のシェルで維持する場合(必要な場合)、拡張機能を使用してシェルを識別すると非常に役立ちます。そうすれば、別のプラットフォームに移動してシェルが少し異なる場合に、変更の対象となるスクリプトがわかります。 .sh .ksh .bsh .csh …
コメント
回答
ではありません
実行可能ファイルは互換性がないため、拡張機能を使用しないでください。シェルスクリプトa.sh
があり、Python a.py
で書き直すとしたら、スクリプトを呼び出すすべてのプログラムを変更する必要があります。 、実装の詳細がリークされました。
MircosoftのWindowsのファイル名拡張子全体が混乱しています。たとえば、a.audio, b.audio, c.audio
であった可能性があります。 a.mp3, b.wav, c.ogg
、およびd.picture, e.picture, f.picture
はd.jpeg, e.png, f.gif
です。ほとんどの場合、どの形式かは関係ありません。音声または画像が入っています。また、新しいユーザーにすべてのファイル拡張子を教えるのに長い時間を費やす必要があります。
コメント
回答
あなたが言ったように、Unixファイル拡張子は純粋に情報です。スクリプトには、正しいシバンがあり、実行可能である必要があります。
拡張子を付けないか、.sh
を使用できます。
I使用するシェル(csh、tcsh、bash、shなど)に関係なく、個人的に次の規則を使用します。
- システムまたは高品質のスクリプトの拡張子はありません(非常にまれです)。
-
.sh
は、低グレードから高グレードまでのクラシックスクリプト用です。
コメント
回答
シェルスクリプトの拡張機能は非常に便利です。たとえば、複数の言語で複数のファイルを含むスクリプトを作成することがよくあります(例:同じディレクトリ内のbash、awk、lua)。 bashファイルのみで文字列を検索する必要がある場合、拡張子はこれを非常に便利にし、誤検知を減らします。または、そのプロジェクトのすべてのbashコードの行数をカウントしたい場合。
プログラムの実行時に拡張子を入力する必要があるのは面倒なので、拡張子なしのシンボリックリンクも作成します。メインの実行可能ファイル。毎回拡張子を入力せずに編集/実行できます。シンボリックリンクは安価で簡単です。
コメント
回答
他の人が言っているように、シェルは拡張子を気にしません。ただし、ファイルを人間がすばやく識別できます。.py
または
そして私はそれらが(少なくとも)どうあるべきかをすぐに知っています。スティーブが言うように、ファイル拡張子による検索や行数の実行も実際的な考慮事項です。