LoginSignup
66
51

More than 5 years have passed since last update.

エディターでは分かりにくい、.shなのに実行できないスクリプトファイルの確認方法

Last updated at Posted at 2018-03-17

目的

他者/他社からzipやtar.gzで.shファイルを受領、
linux環境で実行してみると以下のエラーメッセージが表示される。

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

- 特に送り主がWindowsをメインとしている環境からの場合が要注意

結論

改行コードをCRLFからLFに置換して実行できるかを確認する。
より正確に言うならCRを除去する

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

経緯

エディターで表示させてもUTF-8の.shファイル、しかしlinux上で実行すると、

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

まずcatで改行コードを確認してみる
^MがCR、$がLFを表す

$ cat -e *.sh
#!/usr/bin/env bash$
first_command^M$
second_command^M$

sedで置換してしまいます。

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

置換後

$ cat -e *.sh
#!/usr/bin/env bash$
first_command$
second_command$

注意

OSやカーネルのバージョンによってはCRLFであっても実行できる場合があります。

参考url

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

66
51
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
51