为什么这个 bash 脚本不能作为“sh runserver”运行来识别“source”命令?

sou*_*gro 4 command-line 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
Run Code Online (Sandbox Code Playgroud)

当我运行这个文件时

sh runserver
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

Activating virtual enviroment...
runserver: 3: source: not found
Running Odoo server...
...
Run Code Online (Sandbox Code Playgroud)

我的 bash 文件似乎无法识别源命令,我该如何解决?

cho*_*oba 22

sh不运行您的脚本,bashdash其中不支持source. 使用.来代替:

. odoo-venv/bin/activate
Run Code Online (Sandbox Code Playgroud)

或使用 bash 运行脚本:

/bin/bash runserver
Run Code Online (Sandbox Code Playgroud)

另请参阅StackOverflow 上的类似问题

  • 或者只是`./runserver`。 (13认同)
  • @bac0n:调用一个 shell 来调用另一个 shell?可能但效率不高。 (8认同)