源激活env_name命令失败

时间:2019-12-07 09:22:33

标签: shell conda

我要运行以下代码:

#! /bin/sh

env_name="base"
source activate $env_name

在我的shell中为sh filename.sh,但出现错误消息:

filename.sh: source: not found

带有以下行:

filename.sh: Syntax error: Unterminated quoted string

出什么问题了?可以说我可以在shell中手动运行此命令,但是当我尝试作为shell脚本运行时,此问题给了我错误。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

选项

您有两个选择:

  1. 手动初始化-您在此处手动获取适合于Shell的初始化脚本,以在脚本中启用conda activate功能。
  2. conda run -让Conda为您自动激活环境。

手动初始化

conda activate功能通常是Conda在交互式shell启动时创建的shell函数。要在脚本中使用相同的功能,可以手动运行初始化脚本。假设使用bash类型的外壳,它位于基本的Anaconda / Miniconda目录下的etc/profile.d/conda.sh下。假设您在以下位置拥有它:

/Users/user/miniconda3/etc/profile.d/conda.sh

然后,脚本的工作版本将变为类似

#!/bin/sh

. /Users/user/miniconda3/etc/profile.d/conda.sh
conda activate base

...

Conda Run

您可以在shebang中使用conda run(请参阅conda run --help)来自动激活环境并在该上下文中运行脚本中的所有内容。假设您有properly configured your shell to use conda。例如,

#!/usr/bin/env conda run -n base bash

some_cmd

其中some_cmd是您的环境中可用的命令行程序。

答案 1 :(得分:0)

POSIX Shell中没有名为source的命令。要获取文件,请使用句点,即

. filename.sh