誤ってLD_LIBRARY_PATHを再作成しました。

誤ってLD_LIBRARY_PATHを再作成しました。

私はWSL2でUbuntu 20.04を実行しており、bash構文が初めてです。

次のように更新を指定する一連のCUDAインストール手順に従うと、LD_LIBRARY_PATHが上書きされました。

$ export LD_LIBRARY_PATH=/usr/local/cuda-11.5/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

現在、LD_LIBRARY_PATH値には/usr/local/cuda-11.5/lib64\指定されたパスのみが含まれており、他のパスは含まれていないため、誤って途中でキャリッジリターンが原因ですか?代わりに、前のパスを上書きしたのだろうか?それに追加します。

2つの可能性があります。

  1. 最初はパスが空なので、上書きされることはなく、アクションは必要ありません。この回答最初は空であることを示すようですが、strings /etc/ld.so.cache提案されたコメントの1つとして実行すると、長いリストが返されます。
  2. パスが空でない場合は復元したいと思います。

答え1

つながった答えが正しいです。言ったようにld、このキャッシュを使用してインストールされたライブラリを追跡します。

答えが引き続き説明されるように、これは基本的に空であり、LD_LIBRARY_PATHライブラリの検索方法の一部にすぎません。ld

LD_LIBRARY_PATH選択したライブラリをオーバーライドする必要がある場合やld、ライブラリがキャッシュにない場合(共有ライブラリを開発しているがインストールしておらず、キャッシュを更新していないなど)などの状況に役立ちます。また、すでにコメントで述べたように、この環境変数の型は重要であるため、予期しない文字が挿入されないように注意する必要があります。

デフォルトインストールでは設定されていませんが、LD_LIBRARY_PATHシェル起動スクリプトで設定した可能性があります。この場合、スクリプトをリソースソースとして使用するか(パスを変更せずにオーバーライドする場合)、新しいシェルを起動できます。デフォルトでは、変数に対して何もしない場合は、単純なunset LD_LIBRARY_PATH操作を実行するだけです。

LD_LIBRARY_PATH最後に、空の戻り値と空でない戻り値との間に競合はありませんstrings /etc/ld.so.cache

答え2

(ほとんどの場合)以下を使用して、Linuxで環境変数の生の値を取得できます。

grep -z ^LD_LIBRARY_PATH= /proc/$$/environ | tr '\0' '\n'

必要に応じて、シェルやその他の環境変数$$以外のPIDと交換してください。LD_LIBRARY_PATH

もちろん、プロシージャはこれを直接上書きすることができますが、ENVVAR=fooシェルとsetenv(3)Cライブラリの両方が別の場所に新しい文字列を割り当てます。


通常のシステムではLD_LIBRARY_PATH空でなければならず、ラッパースクリプトと同様のスクリプトでのみ設定できます。

関連情報