web-dev-qa-db-ja.com

カスタム実行可能ファイルまたはスクリプトを配置するUnix標準ディレクトリ?

自分で作成した、またはWebからダウンロードしたカスタムシェルスクリプトまたはプログラムがあり、CLIからこれを実行できるようにしたい場合、これをLinux/Unixディレクトリ構造に配置する標準の場所はありますか?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

通常は〜/ binフォルダーに入れてPATHに入れますが、きれいに見えません。そして、新しいプログラムをダウンロードするたびに、再度PATHに入れなければなりません。

70
atedja

/usr/local/binは、この目的のために、システム全体のインストールのために正確に存在します。プライベートで使用する場合は、~/binは事実上の標準です。

各バイナリを独自のサブディレクトリに保持する場合は、それを実行し、PATHに既にあるディレクトリにシンボリックリンクを追加できます。だから、例えば

curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/

提供$HOME/binPATHにあります。 (これを行う stow などのツールがあります-そして、はるかに-あなたのために舞台裏で。)

78
tripleee

これは、Unixのフレーバーによって若干異なる場合があります。ここではLinuxを想定しています(これはOSXにも当てはまります)。 Filesystem Hierarchy Standard(FHS) (リンクは Linux Standard Baseワーキンググループ )から取得しました:

/usr/local階層は、ソフトウェアをローカルにインストールするときにシステム管理者が使用するためのものです。システムソフトウェアの更新時に上書きされないようにする必要があります。ホストのグループ間で共有可能であるが、/usrにはないプログラムおよびデータに使用できます。

ローカルにインストールされたソフトウェアは、/usr/local内のソフトウェアを置換またはアップグレードするためにインストールされている場合を除き、/usrではなく/usr内に配置する必要があります。

/usr/local/binは多くの場合、デフォルトでパス上にあります。

実行可能ファイルまたはそれへのリンクのみを/usr/local/binに配置し、残りは/usr/local/libまたは/usr/local/shareに配置する必要があることに注意してください。

/optツリーも賢明かもしれません:

/optは、アドオンアプリケーションソフトウェアパッケージのインストール用に予約されています。

/ optにインストールするパッケージは、その静的ファイルを別の/opt/<package>または/opt/<provider>ディレクトリツリーに配置する必要があります。ここで、<package>はソフトウェアパッケージを説明する名前で、<provider>プロバイダーのLANANA登録名です。

[...]

ディレクトリ/ opt/bin、/ opt/doc、/ opt/include、/ opt/info、/ opt/lib、および/ opt/manは、ローカルシステム管理者が使用するために予約されています。パッケージは、ローカルシステム管理者がこれらの予約ディレクトリに(リンクまたはコピーによって)配置することを目的とした「フロントエンド」ファイルを提供する場合がありますが、これらの予約ディレクトリがない場合は正常に機能する必要があります。

/opt/your-package/bin/executableから/opt/binへの独自のリンクを作成し、PATHにまだない場合は/opt/binを配置できます。)

16
Bruno