我试图在脚本中运行奇异外壳,并在奇异图像中运行多个命令,包括conda
。下面是我尝试做的一个例子。运行下面的my_script.sh
不起作用。在shell命令之后,其他一切似乎都在奇点图像之外运行。
## my_script.sh ##
singularity shell image.sif
source activate test_env
pbsv --version
conda deactivate
我知道我可以把所有的命令放在another_script.sh
中,然后用singularity exec image.sif another_script.sh
调用那个脚本,但我尽量避免创建多个小脚本。
有可能在bash脚本中运行奇点shell吗?或者是否可以在奇点内运行多个命令,同时避免创建脚本?
singularity shell
用于获取交互式shell会话,而不是运行脚本。在您的示例中,后续命令都是在shell进程完成后运行的,而不是在shell内部。
如果删除第一行,singularity exec image.sif my_script.sh
将在容器内运行脚本。conda deactivate
也是不必要的,因为环境在容器内。
我发现我可以运行多个命令,而无需创建脚本。
不使用奇异壳,而是使用奇异exec:
singularity exec bash -c "source activate test_env && pbsv --version"