/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません (No such file or directory)
Windows環境で保存したシェルスクリプトをLinux環境で実行すると
/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません /bin/bash^M: bad interpreter: No such file or directory
のエラー。
改行コードが\r\nで保存されてしまったため、Linuxの\nに直す必要がある。
対処法は以下。
sedコマンド一発で変換できる
$ sed -i 's/\r//' <対象のファイル>
以下、検証
cat -e で見ると、改行コードに\rが含まれていることが分かる。
$ cat -e hello.sh #!/bin/bash^M$ echo "hello,world"^M$
このまま実行するとエラー
$ ./hello.sh -bash: ./hello.sh: /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません
sedで改行コードを変換
$ sed -i 's/\r//' hello.sh
catで見ると除去されている
$ cat -e hello.sh #!/bin/bash$ echo "hello,world"$
実行できる
$ ./hello.sh hello,world