Назад | Перейти на главную страницу

Пытаюсь выполнить этот сценарий оболочки, но получаю эту ошибку

Попытка выполнить этот сценарий оболочки.

#!/bin/bash
# Proper header for a Bash script.

# Cleanup, version 2

# Run as root, of course.
# Insert code here to print error message and exit if not root.

LOG_DIR=/var/log
# Variables are better than hard-coded values.
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp


echo "Logs cleaned up."

exit #  The right and proper method of "exiting" from a script.
     #  A bare "exit" (no parameter) returns the exit status
     #+ of the preceding command.
~

Но получая это сообщение

[root@localhost ~]# ./clean.sh
-bash: ./clean.sh: /bin/bash^M: bad interpreter: No such file or directory

Есть идеи, что происходит?

В вашем скрипте есть окончания строки DOS. Преобразуйте их в окончания строк Linux в редакторе или с помощью таких инструментов, как dos2unix, recode и т. Д.

DOS / Windows обычно заканчивает строки CR + LF, в то время как Linux использует только LF. Оболочка не знает, что делать с дополнительным символом CR, и отображает его как ^M.

вам нужно проверить кодировку файла, кажется, вы отредактировали свой сценарий bash из Windows, а затем переместите файл в Linux. чтобы решить эту проблему, у вас есть три решения
1- используйте dos2unix для изменения кодировки файла
2- скопируйте содержимое файла и вставьте его в новый
3- изменить кодировку файла с помощью любого редактора сценариев из Windows, затем снова переместить его в Linux