envsのすべてのパスを別のパスに置き換える方法は?

envsのすべてのパスを別のパスに置き換える方法は?

私は次のような状況にあります。

私のすべてのソフトウェアはその/home/daniel/*パスにインストールされ、内部的に参照されます。ただし、ネットワークドライブを使用すると参照がに変わり、/home/foo/danielソフトウェアを使用できなくなります。

たとえば、いくつかのプログラムを呼び出すか、いくつかの環境変数を変更してgoパスを変更する方法はありますか?それとも2つのプログラムが必要ですか?

ベストアンサー1

ソフトウェアがどのように機能するかによって異なります。おすすめ内部パスで。

環境変数を介してのみ実行できる場合は、次のことができます。

eval "$(export -p | sed 's|/home/daniel|/home/foo/daniel|g')"

すべての/home/danielsを対応/home/foo/danielする値に変更します。

追加/home/foo/daniel/lib(または共有ライブラリがインストールされている場所)は、プログラム$LD_LIBRARY_PATHでそのライブラリを見つけるのに役立ちます。ただし、一部のソフトウェアがconfファイルを見つけるか、または特定の/home/daniel/etcデータファイルを見つけるようにハードコードされている場合は、/home/daniel/shareそれを上書きするように設定できる同等の標準環境変数がありません。

問題を解決するために/home/daniel- >シンボリックリンクを追加したり、chrootまたはユーザーインストールの名前空間を作成できない場合は、たとえばソフトウェアを再コンパイルすることをお勧めします。これにより、任意の場所にいつでもシンボリックリンクを使用できます。../foo/daniel--prefix=/var/tmp/daniel

おすすめ記事