#django #linux #bash #shell
#django #linux #bash #оболочка
Вопрос:
Итак, у меня есть этот небольшой простой сценарий оболочки под названием refre.sh
, который будет обновляться из svn и вызывать команду Django:
echo "Refresh..."
svn update
python manage.py collectstatic --noinput --settings=settings.prod
Когда я выполняю скрипт с ./refre.sh
, выводится:
Refresh...
'nknown command: 'update
Type 'svn help' for usage.
Unknown command: 'collectstatic'
Type 'manage.py help' for usage.
но когда я набираю команды вручную в командной оболочке, я получаю правильный вывод.
Это навело меня на мысль, что существует проблема со средой или что-то в этом роде, потому что у меня локально установлен Django, а не глобальная установка (также локально установлен python, но я ввел полный путь к правильному python, и это не помогло).
Итак, нужно ли мне устанавливать некоторые переменные среды или чего мне не хватает?
Комментарии:
1. как вы выполняете этот скрипт?
2. скрипт вызывается refresh.sh так я это называю./refresh.sh
Ответ №1:
Прежде всего, вы должны иметь #!/bin/sh
перед первой строкой сценария.
И, конечно, вы должны проверить, что используемый вами редактор сохраняет окончания строк в UNIX, а не в Windows (). ( n
).)……….. ( rn
).
Комментарии:
1. сделал это, и это только усугубило загадку: теперь там написано: «sh: . /refre.sh : /bin/sh ^M: плохой интерпретатор: такого файла или каталога нет». Понятия не имею, что это за «^ M» ~ X (
2. ^M — это r, другими словами, окончание строки DOS / Windows. Что вы используете для редактирования этого файла?
3. Вот и все!!! Проблема с новой строкой в Windows. Можете ли вы опубликовать это как ответ вместо комментария, чтобы все остальные это увидели?