저는 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\ 지정된 경로만 포함되고 다른 경로는 포함되지 않으므로 실수로 중간에 캐리지 리턴 때문에? 대신 이전 경로를 덮어썼는지 궁금합니다. 그것에 추가합니다.
두 가지 가능성이 있습니다:
- 처음에는 경로가 비어 있으므로 덮어쓰여지는 것이 없으며 조치가 필요하지 않습니다.이 답변처음에는 비어 있음을 나타내는 것 같지만
strings /etc/ld.so.cache
제안된 주석 중 하나로 실행하면 긴 목록이 반환됩니다. - 경로가 비어 있지 않은 경우 복원하고 싶습니다.
답변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
비어 있어야 하며 래퍼 스크립트 및 유사한 스크립트로만 설정할 수 있습니다.