sh スクリプト名 -sh: /bin/sh^M: 無効なインタプリタ: そのファイルまたはディレクトリがありません。

sh スクリプト名 -sh: /bin/sh^M: 無効なインタプリタ: そのファイルまたはディレクトリがありません。

次のヒントがあります

[/share/registrazioni/Script] # cat delete_7gg.sh
#!/bin/sh
find /share/registrazioni/ -type f -mtime +7 -delete
[/share/registrazioni/Script] # which sh
/bin/sh
[/share/registrazioni/Script] # chmod +x delete_7gg.sh
[/share/registrazioni/Script] # ./delete_7gg.sh
-sh: ./delete_7gg.sh: /bin/sh^M: bad interpreter: No such file or directory

/bin/sh^M: badterpreter: No such file or Directory が表示されるのはなぜですか。 viを使用してスクリプトを作成しました。 qnap qts 4.3.6でスクリプトを作成し、sshを介してアクセスできます。スクリプトは7日以上経過したファイルを削除するだけです。システムにパッケージマネージャがないため、dos2unixをインストールできません。スクリプトを作成してcronに入れたいです。しかし、このエラーが発生しました。

答え1

Unixスタイルの行末(LF、^ J)の代わりにWindowsスタイルの行末(CRLF、^ M ^ J)を使用しているようです。努力するdos2unix

dos2unix delete_7gg.sh

その後、通常どおり実行します。

男性の場合:

dos2unix - DOS/MACからUNIXテキストファイル形式へのコンバータ

関連情報