2019年4月9日火曜日

【Linux】WinSCPでどハマりした

Linuxでスクリプト書いたりするのが面倒な時に
Windowsで書いてからWinSCPで送ったりするんですが、
そのときに初歩的ながらハマったため記載。

WinSCPでWindowsとLinux間でファイル送ったりしたときの話。


Windowsで書いてから送ったスクリプト(シェルスクリプト)なんですが、
実行するとこんなエラーが出てくるんです。

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

まずディレクトリじゃなくってスクリプト実行してんだろーが!
って大分キレつつ中身見直したりしたんですが、原因分からず。
んで、面倒ながらLinux内でLeafpadで全く同じ内容書いてみたら動くんですよね。

ハァー…(クソでか溜息)

ただ、動くっちゃ動くらしいのでなんか原因があるんだろと思ったら
テキスト内の文字コードでした。
Windowsだと\r\nで行われていて、Linuxだと\nになっているんで、
シェルスクリプトの動作がおかしくなっていたと…
そういう事だったんか…


サクラエディタで改行コード直したってもいいんですが、
Linuxに変換コマンドがあるってんで、今回はそっち
sedコマンドというので変換できるらしい。


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

って形で実行するとWindowsの改行コード\r\nの\rを削除した形に変換できる。
これでLinuxのシェルスクリプトで実行できるようになるんですねー。

初歩的なことだとは思うんだけど、いまだにこういう部分に詰まりますね。
勉強になった(小並)



0 件のコメント:

コメントを投稿