首页 > 解决方案 > 在一个进程中从 bash 脚本运行两个命令(conda)

问题描述

我正在尝试编写一个 bash 脚本,其中包括停用和删除 conda 环境。这是一个例子,remove_env.sh

#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Deactivate environment
conda deactivate

# Remove environment
conda remove --name my_env --all --yes

必须停用环境才能将其移除。

不幸的是,这不起作用。我在终端中执行此操作:

$ conda activate my_env
$ ./remove_env.sh

CondaEnvironmentError: cannot remove current environment. deactivate and run conda remove again

我认为这个问题与分叉有关 - 本质上,环境在一个进程中被停用,但随后删除调用在另一个进程中运行,该进程没有停用环境。但我不完全确定。

一些注意事项:

#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Deactivate and remove environment
conda deactivate && conda remove --name my_env --all --yes

标签: linuxbashconda

解决方案


感谢乔纳森在评论中的回答。你完全正确,我完全忽略了 conda 手册中的那个蓝色注释。我能够做到这一点:

#!/bin/bash

# Get the conda command available in bash
eval "$(conda shell.bash hook)"

# Activate the environment
conda activate my_env

# Deactivate environment
conda deactivate

# Remove environment
conda remove --name my_env --all --yes

我认为无论你conda activate有没有争论,它都有效。


推荐阅读