私のディストリビューションのパッケージマネージャにないプログラムを実行しようとしています。 Makefileやソースコードは提供せず、バイナリのみを提供します。フォルダ全体を/usr/localにコピーし、.bashrcのPATHに追加するとプログラムを実行できますが、問題が発生します。プログラムはそのディレクトリにいくつかのローカルファイルを必要とし、それを相対パスとして保存します。プログラムは、プログラム自体があるディレクトリではなく、現在私がいるディレクトリでファイルを探します。この問題を解決する方法はありますか?ありがとうございます。
答え1
プログラムが実際にはあまり友好的ではなく、ユーザーが実行することを期待している場合ただ自分のディレクトリからインポートした場合は、自分のディレクトリ(サブフォルダを含む)に保存してPATHにあるスクリプトを作成する必要があります。スクリプトはプログラムがある場所にディレクトリを変更して実行します。すべてが良くなります。わかりました。それは次のとおりです。
#! /bin/sh -
cd /usr/local/crudesoftware &&
./theprogram
答え2
多くのプログラムは独自の環境変数を使用します。たとえば、名前付きプログラムは、または名前付き環境変数をfoo
見つけることができます(その変数が設定されていない場合は、現在のディレクトリをデフォルトのディレクトリとして使用できます)。ソースがないと言われたことはわかりますが、文書がありますか?たぶんプログラムの使用例ですか?FOO_DIR
FOO_DATA_PATH
.bashrc
最後の手段で試してみてください。
strings foo
(これがfoo
プログラム名であると仮定します)。これはバイナリのすべての「文字列」を一覧表示します(strings(1)
詳細情報を参照)。これにより、多くの出力が生成されます。そのほとんどは横説説です。たとえばmore
、ポケットベルにパイプする必要がありますless
。環境変数名のように見える行(たとえば、すべて大文字、下線を含む)を見つけて、プログラムがインストールされているディレクトリに設定します。