Zsh:エクスポート:このコンテキストでは無効です。

Zsh:エクスポート:このコンテキストでは無効です。

走っている間このスクリプト、エラーが発生しましたこの行(関連スニペットは次のとおりです):

...
_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
...

なぜそんなことですか?私が見つけたこのチケットしかし、対応する構文エラーはありません。

GitHubスレッドで同じ問題に関するレポートが見つかりました(例:ここ)とメーリングリスト(例:ここ)

ベストアンサー1

zshではコマンドの置き換え二重引用符で囲まないと、結果に対してトークン化が行われます。したがって、コマンド置換の結果にスペース、タブ、または改行が含まれている場合、エクスポートコマンドはさまざまな部分に分割されます。

$ export a=$(echo 1 -2)
export: not valid in this context: -2

機能するには、二重引用符コマンドの置き換えが必要か、より安全な構文を使用してください。

PATH=$_NEW_PATH; export PATH

でも:

PATH=$_NEW_PATH export PATH

おすすめ記事