为什么以“sh runserver”运行的这个 bash 脚本无法识别“source”命令?

为什么以“sh runserver”运行的这个 bash 脚本无法识别“source”命令?

我想创建一个将运行 2 个命令的文件。

一个命令将激活一个虚拟环境,然后第二个命令将运行一个服务器。

我的文件名为“runserver”,它看起来像这样:

#!/bin/bash
echo "Activating virtual enviroment"
source odoo-venv/bin/activate
echo "Running Odoo server"
./odoo12/odoo-bin --config=/etc/odoo12.conf

当我使用以下命令运行此文件时

sh runserver

它显示以下错误:

Activating virtual enviroment...
runserver: 3: source: not found
Running Odoo server...
...

看来我的 bash 文件无法识别源命令,我该如何解决这个问题?

答案1

sh不会在 中运行您的脚本bash,但dash不支持source。请.改用:

. odoo-venv/bin/activate

或者使用 bash 运行脚本:

/bin/bash runserver

也可以看看StackOverflow 上的类似问题

相关内容