解决脚本文件无法执行conda命令的问题:CommandNotFoundError: Your shell has not been properly configured to use

简介: 使用Linux系统时,有时候希望利用一个脚本执行多条命令来节省时间,其中如果安装有anaconda,需要切换环境或者关闭conda环境,按道理说,在终端里可以通过命令

问题描述:

使用Linux系统时,有时候希望利用一个脚本执行多条命令来节省时间,其中如果安装有anaconda,需要切换环境或者关闭conda环境,按道理说,在终端里可以通过命令

conda activate xxx

或者

conda deactivate

来实现激活环境和关闭环境,但假如直接将这句指令放进.sh脚本文件中,比如

#!/bin/bash# 退出当前的conda环境conda deactivate

执行会失败,报错内容为

CommandNotFoundError: Your shell has not been properly configured to use 'conda deactivate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
-bash- fish
- tcsh
- xonsh
-zsh- powershell
See 'conda init --help'for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.

上面的报错内容,意思是你的shell还没有正确配置以使用conda deactivate命令。要解决这个问题,你可以按照他写的步骤在Bash shell中初始化Conda

conda init bash

但其实就算你执行了,重新启动你的终端后也不会有什么作用,报错依旧


解决方法:

在脚本中,先source一下你的anaconda目录下,anaconda3/etc/profile.d/conda.sh这个脚本,是用于加载 Conda 的初始化脚本,以使 conda deactivate 命令能够正常工作,比如

#!/bin/bash# 加载 Conda 的初始化脚本source /home/(你的用户名)/anaconda3/etc/profile.d/conda.sh
# 退出当前的conda环境conda deactivate
# 检查是否已经退出conda环境if [ -z"$CONDA_PREFIX" ]; thenecho"Conda environment is deactivated."elseecho"Failed to deactivate Conda environment."exit1fi

上面的脚本,先修改为你的anaconda目录,后面是用一个if指令反馈一下是否已经退出conda环境,运行测试

bb5ce1c5e81a4f1a8162ae64b35d28c1.png

看反馈信息,说明很顺利,如果你经过测试也没问题的话,就可以往后面继续加你的指令了,就比如我是要先关掉conda环境,再执行ROS指令

9f451937f94a4737b3297c0303540ce2.png

当然,除了deactivate/关闭conda环境之外,activate/激活其他环境也是一样的方法


目录
相关文章
|
5天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
12 1
|
13天前
|
存储 Shell 数据安全/隐私保护
Shell 内建命令:Shell 的内在魔力
Shell 内建命令比外部命令执行快,不需额外进程。`type` 命令用来检查命令类型。内建命令如 `cd`、`alias` 和 `echo` 直接在 Shell 中执行,不涉及磁盘 I/O。`type` 示例展示了 `cd` 是内建的,`ifconfig` 是外部的。`bash` 包含多种内建命令,如 `cd` 用于切换目录,`alias` 定义别名,`read` 从输入读取数据。`echo` 默认加换行,`echo -n` 可避免。
20 5
|
12天前
|
Shell 虚拟化
分布式系统详解--框架(Zookeeper-基本shell命令)
分布式系统详解--框架(Zookeeper-基本shell命令)
15 1
|
16天前
|
安全 Shell Linux
探索Linux命令chsh:更改用户的默认shell
`chsh`是Linux命令,用于更改用户的默认登录shell。它涉及用户环境配置和系统安全,允许用户选择更适合自己的shell以提升效率。命令有交互式选项和参数如`-s`来指定新shell。在使用时要注意新shell的可执行性、权限问题及选择合适的shell。例如,要更改为bash,用户可运行`chsh`后按提示操作,而root用户能用`sudo chsh -s /bin/zsh john`为用户`john`设定zsh。在更改前,确认shell路径、权限,并了解不同shell的特点。
|
16天前
|
监控 Shell Linux
Linux的Shell脚本详解
Linux的Shell脚本详解
|
1天前
|
移动开发 网络协议 Shell
查看IP访问量的shell脚本汇总
查看IP访问量的shell脚本汇总
|
5天前
|
Shell 调度
Shell脚本中的if条件判断语句
Shell脚本中的if条件判断语句
|
6天前
|
Shell
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
5 0
|
6天前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
12 0
|
9天前
|
Shell
Shell脚本之条件语句if总结
Shell脚本之条件语句if总结