【发布时间】:2021-01-29 04:14:11
【问题描述】:
我是 shell 脚本的新手,我创建了一个 run_all.sh 文件,其中包含以下内容,
cd directory1/folder1
bash -l
conda activate py38
poetry install
./scripts/run_myscript.sh
如果我在终端中逐行执行这些行,我没有问题,但是当我将所有内容放入 run_all.sh 文件并执行 (bash run_all.sh) 时,只有前两行被执行,然后它停止而不打印任何错误代码。
注意:我使用的是 Sagemaker,它使用 sh 作为默认 shell,而不是 bash,所以在手动运行中我启动新 shell (bash -l) 以通过 conda (@ 987654328@) 并安装要求...
如果您发现我在这里遗漏了什么,请告诉我。
【问题讨论】:
-
你对
bash -l这个函数的理解是什么? -
bash -l正在启动一个新的 shell - 你确定你真的要这样做吗? -
@Mike : 输入
exit,或单独的Control-D,它将继续运行。 -
@CarlNorum,sagemaker 的默认 shell 使用
sh而不是bash所以在手动运行中我启动新 shell 以通过 conda 激活 py38 并安装要求... -
如果您消除
bash-l` 然后将脚本的第一行更改为#!/bin/bash,它可能会起作用。无论如何,并同意上面投票率很高的 cmets,尚不清楚您需要什么/为什么需要bash -l。祝你好运。