我有一个脚本:
cd /path/to/my/manage.py/
exec gunicorn --env DJANGO_SETTINGS_MODULE=app.my_settings app.wsgi
当我使用 ./filename
执行它时,这有效
但是当我用这个的时候
PATH=/path/to/my/manage.py/
cd $PATH
exec gunicorn --env DJANGO_SETTINGS_MODULE=app.my_settings app.wsgi
事实并非如此。错误是
exec: gunicorn: not found
这不是变量的工作原理吗?
“PATH”可能是您在 bash
(或实际上大多数 shell)中为变量名做出的最糟糕的选择之一,因为它提供了 shell 将在其中搜索其他目录的列表需要时使用外部命令(例如 gunicorn
)。
您需要为您的使用选择一个不同的变量名。另请注意,有一个共同约定,即严格在脚本中使用的变量(称为“shell 变量”)通常使用小写名称,而用于其他外部命令访问的变量(“环境变量”,以事实区分您 export
它们)使用大写名称。这不是一个严格的要求,也不会导致失败(至少只要您不使用隐藏 shell 内置含义的名称),但许多人会建议您坚持该约定。
我是一名优秀的程序员,十分优秀!