Ame*_*ina 12 zsh environment-variables command-substitution assignment
...
_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
...
Run Code Online (Sandbox Code Playgroud)
这是为什么?我找到了这张票,但我没有那个语法错误。
cuo*_*glm 12
在 zsh 中,如果没有用双引号括起来,则执行命令替换结果分词。因此,如果您的命令替换结果包含任何空格、制表符或换行符,则导出命令将被分解为多个部分:
$ export a=$(echo 1 -2)
export: not valid in this context: -2
Run Code Online (Sandbox Code Playgroud)
您需要双引号命令替换以使其工作,或使用更安全的语法:
PATH=$_NEW_PATH; export PATH
Run Code Online (Sandbox Code Playgroud)
甚至:
PATH=$_NEW_PATH export PATH
Run Code Online (Sandbox Code Playgroud)
我想我明白了,为了符合 POSIX,我需要在这里加双引号。以下修复了它。
export CONDA_ENV_PATH="$(get_dirname "$_THIS_DIR")"
Run Code Online (Sandbox Code Playgroud)
以下优秀文章可能会有所帮助:
| 归档时间: |
|
| 查看次数: |
37615 次 |
| 最近记录: |