来源:在 ubuntu 14.04 上 运行 shell 脚本时未发现错误
source: not found error while running shell script on ubuntu 14.04
OS- Ubuntu 14.04
这是我的 shell 脚本,我想使用 cron 作业安排它。
parser.sh
#!/bin/bash
source .profile
workon venv
cd /home/ashish/deployments/myproject
export DJANGO_SETTINGS_MODULE=myproject.settings_production
python /home/ashish/deployments/myproject/myproject/manage.py parse_data
Cron 作业-
*/15 * * * * . /home/ashish/parser.sh
每当这个 cron 作业 运行s 我收到一封有错误的邮件:
/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found
Traceback (most recent call last):
File "/home/ashish/deployments/myproject/myproject/manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
当我 运行 来自终端的脚本时 -
. parser.sh #this gives no error
sh parser.sh #this gives errors
/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found
此脚本中可能存在的错误是什么?
您需要运行它:
bash parser.sh
不是sh parser.sh
。
如果您的脚本是为 bash
编写的,则不应尝试使用 sh
来执行它。您脚本的每个语法都可能不符合 sh
Bourne shell.
的标准
将 cron 作业命令更改为:
*/15 * * * * bash /home/ashish/parser.sh
专门指定bash
。
或者因为你的 OS 是 Ubuntu 14.04,你通常不需要指定 bash,即
*/15 * * * * /home/ashish/parser.sh
应该可以正常工作。
OS- Ubuntu 14.04
这是我的 shell 脚本,我想使用 cron 作业安排它。
parser.sh
#!/bin/bash
source .profile
workon venv
cd /home/ashish/deployments/myproject
export DJANGO_SETTINGS_MODULE=myproject.settings_production
python /home/ashish/deployments/myproject/myproject/manage.py parse_data
Cron 作业-
*/15 * * * * . /home/ashish/parser.sh
每当这个 cron 作业 运行s 我收到一封有错误的邮件:
/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found
Traceback (most recent call last):
File "/home/ashish/deployments/myproject/myproject/manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
当我 运行 来自终端的脚本时 -
. parser.sh #this gives no error
sh parser.sh #this gives errors
/bin/sh: 6: /home/ashish/parser.sh: source: not found
/bin/sh: 7: /home/ashish/parser.sh: workon: not found
此脚本中可能存在的错误是什么?
您需要运行它:
bash parser.sh
不是sh parser.sh
。
如果您的脚本是为 bash
编写的,则不应尝试使用 sh
来执行它。您脚本的每个语法都可能不符合 sh
Bourne shell.
将 cron 作业命令更改为:
*/15 * * * * bash /home/ashish/parser.sh
专门指定bash
。
或者因为你的 OS 是 Ubuntu 14.04,你通常不需要指定 bash,即
*/15 * * * * /home/ashish/parser.sh
应该可以正常工作。