0

/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません

Windows環境で保存したシェルスクリプトをLinux環境で実行すると下記エラーがでます。

/bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません

改行コードが\r\nで保存されてしまったため、Linuxの\nに直す必要がある。

sed -i 's/\r//' <対象ファイル>

❏ 例

$ cat -e kvm_linux.sh | head
#!/bin/bash^M$
^M$
^M$
#KVMM-^CRM-^C}M-^CM-^SM-^Ch^M$
^M$
kabe(){^M$
  echo '=================================================='^M$
}^M$
^M$
^M$

そのまま実行すると、
$ ./kvh_linux.sh
-bash: ./hello.sh: /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません

❏ 解決策

sedで改行コードを変換

sed -i 's/\r//' kvh_linux.sh

下記のとおり、制御文字^mがなくなっているのが確認できる。

$ cat -e kvm_linux.sh | head
#!/bin/bash$
$
$
#KVMM-^CRM-^C}M-^CM-^SM-^Ch$
$
kabe(){$
  echo '=================================================='$
}$
$
$

実行

$ ./kvm_linux.sh
2016年  9月  9日 金曜日 23:38:57 JST
==================================================
==================================================
==================================================
----
eth0:
driver: virtio_net
version: 1.0.0
firmware-version:
bus-info: 0000:00:03.0
supports-statistics: no
・
・
・

実行できた。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です