$PATHに依存ディレクトリを持つプログラムを追加するには?

$PATHに依存ディレクトリを持つプログラムを追加するには?

私のプログラムにプログラムを追加したいのですが、コード$PATHは複数のファイルに分割され、実行時にルートディレクトリから取得lib/されます。

projectRootDirectory
├ programBinary
└ lib
  ├ someLibrary
  └ someLibrary2

$PATH依存関係の欠落に関する苦情を提起せずに、私のプログラムにこのようなものをどのように追加できますか?


私は通常バイナリファイル/usr/local/binを持っています

  • コピー

    cp /path/to/programBinary /usr/local/bin
    
  • またはシンボリックリンク

    cd /usr/local/bin
    ln -s /path/to/programBinary programBinary
    

しかし、どちらも依存関係を見つけることができません。

必要なファイルの/usr/local/binいくつかも実行可能で、私の$PATH

どうすればいいですか?

ベストアンサー1

もちろんprojectRootDirectoryに追加することもできますが、$PATHここには少なくとも2つの欠点があります。

  • binあなたが説明する方法によれば、この特定のプロジェクトは、次のようにプロジェクトをサブディレクトリとしてうまく構成しないようですlib

    projectRootDirectory
    ├ bin
    │ └ programBinary
    └ lib
      ├ someLibrary
      └ someLibrary2
    

    だから強制的にprojectRootDirectoryそれ自体に入れなければなりませんが$PATH、実行のためのバイナリ以外に他のものが含まれているのでちょっと見苦しいです。

  • 同様のプロジェクトが多いと、コンテンツが$PATH爆発的に増えて制御できなくなります。

代わりに、おそらくこの特別な場合にできる最も簡単なことは、ラッパー実行可能ファイルをに入れることです/usr/local/bin。これは、現在の場所で「実際の」プログラムを実行する非常に単純なシェルスクリプトです。

#!/bin/sh
exec projectRootDirectory/programBinary "$@"

ラッパースクリプトはフルパス名を使用してそれを呼び出すため、通常の方法でセカンダリファイルを見つけることができます。

おすすめ記事