다양한 환경에 맞게 경로를 동적으로 변경하는 방법은 무엇입니까?

다양한 환경에 맞게 경로를 동적으로 변경하는 방법은 무엇입니까?

다양한 버전의 CUDA가 설치되어 /usr/local/cuda-...있으며 다양한 프로젝트에 맞는 올바른 버전을 선택하는 방법이 필요합니다.

나는 노력했다

export CUDA_HOME=/usr/local/cuda-10.0
export PATH=\$CUDA_HOME/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=\$CUDA_HOME/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

그러나 PATH의 변수는 확장되지 않는 것 같습니다.

지금까지 내 최고의 아이디어는 다음과 같습니다.

BASEPATH=$PATH:$HOME/installed/pycharm-community-2020.2/bin
LIBBASEPATH=$LD_LIBRARY_PATH

function env100() {
    CUDA_HOME=/usr/local/cuda-10.0
    setpaths
}

function env101() {
    CUDA_HOME=/usr/local/cuda-10.1
    setpaths
}

function setpaths() {
    export PATH=$BASEPATH:$CUDA_HOME/bin
    export LD_LIBRARY_PATH=$LIBBASEPATH:$CUDA_HOME/lib64
}

하지만 이것이 내가 하고 싶은 일을 하는 가장 쉬운 방법이라고는 생각할 수 없습니다. 그리고 나는 그것이 어떤 이상한 방식으로 폭발할 수 있는지 알 만큼 오랫동안 그것을 사용하지 않았습니다. (편집: 가장 먼저 폭발할 사항: Python virtualenvs.)

관련 항목: 이 질문과 비슷한 작업을 하려고 합니다.Bash에서 "동적" 경로를 설정하는 올바른 방법은 무엇입니까? (안드로이드 SDK에 적용 가능)

그럼 여러분의 제안을 들어보겠습니다!

답변1

하고 싶은 일에 대한 추가 정보 없이는 무언가를 추천하기가 어렵습니다.

  • 경로 확장은 다음과 같이 수행됩니다.PATH=$PATH:$CUDA_HOME/bin:/foo/otherpath

  • .bashrc각 사용자 환경에 대한 특정 PATH를 설정하여 더 많은 사용자를 생성할 수 있습니다(bash를 사용하는 경우) export. 사용자 간에 전환하려면 su usernamerun을 실행하여 exit다시 전환하세요. whoami방향을 찾기 위해 달려갑니다 . 실행하여 echo $SHLVL현재 쉘 레벨이 무엇인지 확인하십시오. 첫 번째 셸에서 SHLVL카운터 var는 1로 시작하고 매번 1씩 su증가하고 감소합니다.exit

  • PATHexporting 하지 않고 쉘 스크립트에서 var를 설정하십시오 . 이는 PATH스크립트가 실행되는 하위 쉘만 변경합니다.

테스트 파일

#!/bin/bash
PATH=/home/foo
echo $PATH

달리기./test.sh;echo $PATH

  • 컴파일된 코드를 사용하는 경우 make경로를 추가/변경할 수 있습니다.파일 생성

관련 정보