Попытка выполнить этот сценарий оболочки.
#!/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