다른 환경 변수의 "별칭"인 환경 변수를 만들고 싶습니다. 즉, 원래 변수가 변경될 때마다 이 별칭 변수도 변경됩니다. 어떻게 하면 이를 강력한 방식으로 수행할 수 있습니까?
저의 정확한 상황은 이렇습니다. 저는 CONDA_DEFAULT_ENV
환경을 변경할 때 변경되는 환경 변수를 사용하는 conda 환경을 사용합니다. 변경사항이 있을 때 VIRTUAL_ENV
설정하고 업데이트 할 수 있는 환경 변수를 갖고 싶습니다.CONDA_DEFAULT_ENV
저는 MacOS에서 zsh를 사용하고 있습니다.
답변1
환경 변수의 값은 문자열입니다. 이보다 더 이국적일 수는 없습니다. 프로그램이 자동으로 다른 변수를 보도록 만들 수 있는 방법은 없습니다. 파일 심볼릭 링크와 같은 환경 변수는 없습니다.
Zsh에는 변수 변경의 효과를 사용자 정의하기 위한 매우 제한된 도구가 있지만 여기서는 도움이 되지 않습니다. (C로 커스텀 모듈을 작성해야 합니다.) 그럼에도 불구하고 변수는 zsh에 할당된 경우에만 작동합니다.
당신이 할 수 있는 일은 을 사용하는 것입니다 CONDA_DEFAULT_ENV
. 일반적으로 설정하지 않는 것이 좋습니다. CONDA_DEFAULT_ENV
설정되지 않은 경우 래퍼 스크립트에서 설정하도록 하세요.
/usr/bin
이 스크립트를 이전 디렉토리 $PATH
(예 ~/bin/conda-wrapper
: . 래핑하려는 명령 이름(예: ) 아래에 스크립트에 대한 심볼릭 링크를 만듭니다 ln -s conda-wrapper ~/bin/conda
. 그런 다음 conda foo
이를 설정 CONDA_DEFAULT_ENV
하고 실행합니다 /usr/bin/conda foo
.
#!/bin/sh
if [ -z "$CONDA_DEFAULT_ENV" ] && [ -n "$VIRTUAL_ENV" ]; then
export CONDA_DEFAULT_ENV="$VIRTUAL_ENV"
fi
exec "/usr/bin/${0##*/}" "$@"