linux - 在一个进程中从 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
我认为这个问题与分叉有关 - 本质上,环境在一个进程中被停用,但随后删除调用在另一个进程中运行,该进程没有停用环境。但我不完全确定。
一些注意事项:
- 我不能使用
source remove_env.sh
- 我必须能够使用./remove_env.sh
- 我试过这个没有成功:
#!/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
conda activate my_env
我在我的命令中调用~./bashrc
- 我不能使用别名 - 它必须是 bash 脚本
解决方案
感谢乔纳森在评论中的回答。你完全正确,我完全忽略了 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
有没有争论,它都有效。
推荐阅读
- pandas - 循环创建多个数据集以将它们转换为列表
- java - 我如何在java中调用接口的方法并获得一些回报?
- java - 使用 spark 时找不到 CSV 类错误(在 java 中)
- javascript - 如何在节点js中同时对各个日期的日期和值数组进行排序?
- date - 赛普拉斯默认日期不变
- elasticsearch - “query_string”如何在 Elasticsearch 中工作?
- django - 类型字符变化的值太长(25)
- moodle - Moodle hide 为学生关闭编辑功能
- react-native - Woocommerce rest api过滤器类别父ID
- javascript - jquery在dom中显示对象数组