このスクリプト を実行すると、 この行 でエラーが発生します(以下の関連スニペット):
...
_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
...
何故ですか?私は this ticket を見つけましたが、その構文エラーはありません。
Zshでは、 Command Substitution 結果が実行されました。二重引用符で囲まれていない場合、単語の分割が行われました。したがって、コマンド置換結果に空白、タブ、または改行が含まれている場合、エクスポートコマンドは次のように分割されます。
$ export a=$(echo 1 -2)
export: not valid in this context: -2
コマンド置換を機能させるには、二重引用符で囲むか、より安全な構文を使用する必要があります。
PATH=$_NEW_PATH; export PATH
あるいは:
PATH=$_NEW_PATH export PATH
POSIXに準拠するには、ここで二重引用符が必要です。以下はそれを修正しました。
export CONDA_ENV_PATH="$(get_dirname "$_THIS_DIR")"
以下の優れた記事が役立つかもしれません: