실수로 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\ 지정된 경로만 포함되고 다른 경로는 포함되지 않으므로 실수로 중간에 캐리지 리턴 때문에? 대신 이전 경로를 덮어썼는지 궁금합니다. 그것에 추가합니다.

두 가지 가능성이 있습니다:

  1. 처음에는 경로가 비어 있으므로 덮어쓰여지는 것이 없으며 조치가 필요하지 않습니다.이 답변처음에는 비어 있음을 나타내는 것 같지만 strings /etc/ld.so.cache제안된 주석 중 하나로 실행하면 긴 목록이 반환됩니다.
  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비어 있어야 하며 래퍼 스크립트 및 유사한 스크립트로만 설정할 수 있습니다.

관련 정보