Por que este script bash não é executado como “sh runserver” e reconhece o comando “source”?

Sep 06 2020

Eu quero fazer um arquivo que irá executar 2 comandos.

Um irá ativar um ambiente virtual e depois disso, o segundo comando irá executar um servidor.

Meu arquivo é chamado de "runserver" e tem a seguinte aparência:

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

Quando executo este arquivo com

sh runserver

Mostra o seguinte erro:

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

Parece que meu arquivo bash não está reconhecendo o comando de origem, como posso corrigir isso?

Respostas

22 choroba Sep 07 2020 at 00:23

shnão executa seu script, bashmas no dashqual não oferece suporte source. Use em seu .lugar:

. odoo-venv/bin/activate

ou execute o script com bash:

/bin/bash runserver

Veja também uma pergunta semelhante em StackOverflow .