スクリプトを.sh拡張子で保存する必要がありますか?


66

機能的なスクリプトがいくつかあり、/usr/binそれらをコピーして通常の端末コマンドとして使用したい。.sh拡張機能とともに使用することをお勧めしますか、または拡張機能なしで保存できますか?


6
また、これらのスクリプトをすべてのユーザーが利用できるようにしたい/usr/local/bin場合は、より良い選択かもしれません。
セーラム14

6
@Salem /usr/bin/usr/local/binの両方のすべてのユーザーが使用されるべきであるが/usr/local/bin、パッケージの一部ではない実行ファイルのためのより良いです。
gerrit 14

私が見た唯一の利点は、vimやnanoなどの編集者が最初から強調表示する方法を知っていることです。
ラット14

1
@rath shebangを#!/usr/bin/env bashまたはに設定すると、拡張子なしで構文が強調表示され#!/bin/bashます。
Sparhawk

@Sparhawk確かに、スクリプトを実行しようとするまで忘れることがよくあります;)
rath 14

回答:


71

いいえ、良い方法ではありません。スクリプトを拡張せずに保管する必要があります。パッケージの一部であるスクリプトには.sh拡張子、つまりupdate-grub.shではなくupdate-grubがないことに注意してください。それでも納得がいかない場合は、Googleシェルスタイルガイドが次のように言っていることをお知らせください

実行可能ファイルには拡張子(強く推奨)または.sh拡張子を付けないでください。ライブラリには.sh拡張子が必要であり、実行可能であってはなりません。

PSスクリプトをに入れる必要はありません/bin。ディレクトリ~/binを作成し、そこにスクリプトを配置できます。ディレクトリ~/bin$PATHデフォルトで含まれているため、そこに置かれたスクリプトは他のシェルコマンドとして実行できます。


4
「ディレクトリ〜/ binは$PATHデフォルトで含まれています」 -いつから?とにかく、~/.local/binそれが標準なので、おそらくより良い選択です。
nyuszika7h 14

1
「ライブラリには.so拡張子が必要です」という意味ですか?じゃない
キースウォルターズ14

3
最初に@KeithWolters、私ではなく、Google。次に、.shではなく.shであり、バイナリではなくシェルスクリプトについて説明しています。

1
Googleスタイルガイドは、Googleに特化しています。たとえば、「Bashは実行可能ファイルに許可されている唯一のシェルスクリプト言語です。」明らかに、ベストプラクティスではなく内部ルールです。
ポールドレーパー14

1
@ nyuszika7hチェックアウト〜/ .profile ...ディレクトリが存在する場合、パスに$ HOME / binを挿入します
Corey Goldberg

9

セルゲイが言った~/binように$PATH、私はあなたに自動的に追加される推奨事項を使用します。または、すでににある可能性があります。しかしながら:/usr/local/binPATH

  • あなたは自分でこれをやっています。快適に感じるものなら何でも使用してください。実際、拡張機能を保持して、実行中のスクリプトであることを思い出させてください。
  • 拡張機能はで一般的ではありません/usr/bin。私のシステムでは、2つしか見つかりません。

    $ dpkg -S `ls /usr/bin/*.sh`
    mtools: /usr/bin/amuFormat.sh
    gettext-base: /usr/bin/gettext.sh

    したがって、パッケージ化する場合は、拡張機能を絶対に省いてください。


2
~/bin$PATH存在する場合は自動的に追加されます。手動で追加する必要はありません。ただ、ログアウトして再度ログイン、ディレクトリを作成します。
セルゲイ

5

ファイルの先頭に次の行を置くだけです:

#!/bin/bash

つまり、ファイルは自動的にタイプされます:拡張子なしのシェルスクリプト

ファイルに実行許可を与えることを忘れないでください。

直接コマンドで実行できるようにスクリプトを配置するには、次を参照してください:直接コマンドで実行できるようにスクリプトをどこに配置すればよいですか?


2
または、完全なbashシェルが不要な場合は#!/ bin / shだけでも可能です。
フリッカーフライ14

多くのOSは/ bin / shと/ bin / bashをリンクします
Max Coplan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.