我认为 $PATH 有问题。我正在运行一个 shell 脚本,它抱怨说它无法识别该命令,尽管我手动运行它时它可以识别。
Shell 脚本:
#!/bin/bash
# DEPLOYMENT
USR="test"
APP="/srv/www/test"
ENV="/srv/www/test/venv"
LOG="/var/log"
# LOGGING
exec > >(tee -a $LOG/log.log)
exec 2> >(tee -a $LOG/error.log)
# SOFTWARE
apt-get update
apt-get install -y python-dev build-essential nginx python-pip
# PACKAGES
pip install virtualenv uwsgi supervisor
# ENVIRONMENT
mkdir -p $APP
virtualenv $VENV
source $VENV/bin/activate
# FINALIZATION
service supervisor restart
service nginx restart
当我运行这个时,我收到以下错误:
错误日志:
/root/StackScript: line 22: virtualenv: command not found
/root/StackScript: line 23: /bin/activate: No such file or directory
supervisor: unrecognized service
当我手动运行命令“pip”时,它显示已安装并被识别。发生了什么事?我该如何诊断?
答案1
问题似乎是您使用了 VENV 但没有定义它。
/root/StackScript:第 23 行:/bin/activate:没有此文件或目录
正在$VENV
扩大到无,所以$VENV/bin/activate
变成/bin/activate
并且未被发现。
也许你的意思是
VENV="/srv/www/test/venv"
在第 6 行。