0

我制作了一个简短的shell 脚本,如下所示:

#!/bin/sh

PROJECT_NAME="my_project"

mkdir $PROJECT_NAME
cd $PROJECT_NAME
python3 -m venv beeware-venv
source beeware-venv/bin/activate
python3 -m pip install briefcase
briefcase new

当我使用 运行此脚本时sh create_new_beeware_project,失败的第一行是source beeware-venv/bin/activate; 我得到的错误是“来源:未找到”。但是,如果我将每一行一一输入终端,一切正常

这本身并不是一个大问题。最终,我可以手动输入命令。但这让我觉得 shell 脚本有一些我不理解的重要内容,如果可能的话,我想向我解释一下。

4

1 回答 1

1

涉及到两个 shell:您的交互式 shell,可能是bash,以及/bin/sh您系统的默认 POSIX shell。是您无法识别source的非标准别名。改为使用。./bin/sh.

#!/bin/sh

PROJECT_NAME="my_project"

mkdir "$PROJECT_NAME" || exit 1
cd "$PROJECT_NAME"
python3 -m venv beeware-venv
. beeware-venv/bin/activate
python3 -m pip install briefcase
briefcase new
于 2021-01-28T16:18:38.640 回答