【问题标题】:shell script stops running after bash -lshell 脚本在 bash -l 后停止运行
【发布时间】: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 。祝你好运。

标签: linux bash shell terminal


【解决方案1】:

伙计,伙计。

#!/bin/sh
cd directory1/folder1 && conda activate py38 && poetry install && ./scripts/run_myscript.sh

【讨论】:

    【解决方案2】:

    如果 sh 是您的默认 shell 并且您想要 bash,请像这样更改您的脚本:

    #!/bin/bash -l
    cd directory1/folder1
    conda activate py38
    poetry install 
    ./scripts/run_myscript.sh
    

    【讨论】:

      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 2018-04-17
      • 2010-09-19
      • 2018-02-04
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多