Выполнение скрипта из задачи оболочки

Lubuntu Raring Ringtail. Я хочу иметь возможность выполнять свои сценарии с ./

Я начинаю свой скрипт на Python с #!/usr/bin/python и это говорит

bash : ./myscript.py: /usr/bin/python^M: bad interpreter: No such file or directory

Если я использую #!/usr/bin/env python это дает похожую ошибку:

: No such file or directory

Что я делаю неправильно?

У меня абсолютно установлен Python, и я могу запускать сценарии как обычно с python myscript.py

2 ответа

Решение

От ^M вы можете видеть, что файл myscript.py использует разрывы строк в стиле windows/dos (Windows использует CR LF (возврат каретки + перевод строки) в конце строки. Unix использует только LF - так что вы видите как ^M это ЧР. Так что вы не используете /usr/bin/python но /usr/bin/python<CR> этого не существует.

Вы можете удалить ^M с помощью dos2unix (сделать sudo apt-get install dos2unix установить, а затем использовать dos2unix myscript.py).

Сделайте это, затем попробуйте ваш скрипт на Python:

$ tr -d '\r' < test.py > newtest.py

Это удаляет возврат каретки, созданный из Windows

Для дальнейшего чтения удалите возврат каретки Windows с tr

Другие вопросы по тегам