달리는 동안이 스크립트, 오류가 발생했습니다이 줄(관련 스니펫은 다음과 같습니다):
...
_NEW_PATH=$("$_THIS_DIR/conda" ..activate "$@")
if (( $? == 0 )); then
export PATH=$_NEW_PATH
# If the string contains / it's a path
if [[ "$@" == */* ]]; then
export CONDA_DEFAULT_ENV=$(get_abs_filename "$@")
else
export CONDA_DEFAULT_ENV="$@"
fi
# ==== The next line returns an error
# ==== with the message: "export: not valid in this context /Users/avazquez/anaconda3"
export CONDA_ENV_PATH=$(get_dirname $_THIS_DIR)
if (( $("$_THIS_DIR/conda" ..changeps1) )); then
CONDA_OLD_PS1="$PS1"
PS1="($CONDA_DEFAULT_ENV)$PS1"
fi
else
return $?
fi
...
왜 그런 겁니까? 내가 찾은이 티켓, 하지만 해당 구문 오류는 없습니다.
답변1
zsh에서는명령 대체큰따옴표로 묶지 않으면 결과에 대해 토큰화가 수행됩니다. 따라서 명령 대체 결과에 공백, 탭 또는 줄바꿈이 포함된 경우 내보내기 명령은 여러 부분으로 나뉩니다.
$ export a=$(echo 1 -2)
export: not valid in this context: -2
작동하려면 큰따옴표 명령 대체가 필요하거나 더 안전한 구문을 사용하십시오.
PATH=$_NEW_PATH; export PATH
심지어:
PATH=$_NEW_PATH export PATH
답변2
POSIX 규정을 준수하려면 여기서 큰따옴표를 사용해야 한다는 점을 이해한 것 같습니다. 다음은 이를 수정합니다.
export CONDA_ENV_PATH="$(get_dirname "$_THIS_DIR")"
다음의 훌륭한 기사가 도움이 될 수 있습니다.
답변3
zshrc에서 별칭으로 내보낼 변수 이름을 추가하는 것을 잊었을 때 이런 일이 발생했습니다.
잘못된
export /Library/Java/JavaVirtualMachines/ibm-semeru-openjdk-17.jdk/Contents/Home
좋아요:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/ibm-semeru-openjdk-17.jdk/Contents/Home