
私は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つの可能性があります。
- 最初はパスが空なので、上書きされることはなく、アクションは必要ありません。この回答最初は空であることを示すようですが、
strings /etc/ld.so.cache
提案されたコメントの1つとして実行すると、長いリストが返されます。 - パスが空でない場合は復元したいと思います。
答え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
空でなければならず、ラッパースクリプトと同様のスクリプトでのみ設定できます。