【发布时间】:2019-08-18 07:05:23
【问题描述】:
我需要在 .bashrc 中组合两个不同的部分 我的目的是在尝试初始化 conda 之前将 PYTHONPATH 初始化为空。
.bashrc 中有 conda 初始化部分。
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/me/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/me/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/me/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/me/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
但是,我在使用默认 PYTHONPATH 时遇到了问题,因为除非我想使用 conda,否则我无法触及这个默认值。所以,我创建了 conda() 别名。但它与使用 conda 初始化部分发生冲突。
错误信息如下所示。
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
这意味着未执行 conda 初始化。
这里是 conda()。
state=true
conda() {
if $state; then
state=false
PYTHONPATH=''
command conda "$@"
else
command conda "$@"
fi
}
.basrh 的行为应该类似于我尝试在命令行上使用 conda 语句,仅在 conda 初始化工作之前第一次清除 PYTHONPATH。如果我不尝试使用 conda 语句,PYTHONPATH 应该是不可触及的。
【问题讨论】:
-
conda已经是一个 bash 函数(检查declare -f conda),所以你正在重写它,因此当你的新函数尝试调用它时它没有定义。 -
@merv 但是,在声明 __conda_setup 之后,回显 $?显示 127 状态。如果我没有将 PYTHONPATH 设为空值,则 conda activate 将不起作用。或者,如果我得到 True 或 False 语句 conda 是否在执行的命令中,我可以解决这个问题。
-
@merv 我需要修复上面的评论。回声$?在终端开头显示 0 状态。
标签: bash function anaconda alias conda