我要运行以下代码:
#! /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脚本运行时,此问题给了我错误。任何帮助表示赞赏。
答案 0 :(得分:0)
您有两个选择:
conda activate
功能。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
...
您可以在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