web-dev-qa-db-ja.com

/ bin/sh ^ M:不正なインタプリタ

私は私の供給された12システムにlpng142をインストールしようとしています。私にとっては問題のように思えます。このエラーが出ます

[root@localhost lpng142]# ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
[root@localhost lpng142]# 

これをどのように修正しますか? /etc/fstabファイル:

#
# /etc/fstab
# Created by anaconda on Wed May 26 18:12:05 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=ce67cf79-22c3-45d4-8374-bd0075617cc8 /boot                   ext4    
defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
362
Vineeth

修正するには、スクリプトをviまたはvimで開き、viコマンドモードで入力します(key Esc)、その後、これを入力してください:

:set fileformat=unix

最後にそれを保存

:x!または:wq!

704
polymame

Dos行末ファイルがあるようです。その手がかりは^Mです。

あなたはUnixの行末を使ってファイルを再保存する必要があります。

あなたはこれをあなたのためにやるdos2unixコマンドラインユーティリティを持っているでしょう。

356
Richard

あるいは、スクリプトを使ってこれを行いたい場合は、

sed -i 's/\r//' filename
87
Somaiah Kumbera

あなたの設定ファイルは単純なLF行末(unixスタイル)の代わりにCRLF行末(windowsスタイル)を含んでいます。 WindowsからFTPモードASCIIを使用して転送しましたか?

あなたが使用することができます

dos2unix configure

これを修正するか、viで開き、:%s/^M//g;を使ってそれらすべてを置き換えます( CTRL+V、 CTRL+M ^ Mを取得する

41
Konerak

あなたが修正するために次のコマンドを使用することができます

cat file_name.sh | tr -d '\r' > file_name.sh.new
25
wu liang

見つからなかった場合は、コマンドを実行してください。

CentOS:

# yum install dos2unix*

# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...

Ubuntu/Debian:

# apt-get install dos2unix
13
lakshmikandan

これは通常、あなたがWindowsからファイルを編集して、今それを何らかのUNIXベースのマシンから実行しようとしているときに起こります。

Linuxフォーラム に提示された解決策は私のために働いた(何度も)。

Perl -i -pe's/\r$//;' <file name here>

お役に立てれば。

シモンズ:あなたはあなたのunix/linuxマシンにPerlをインストールする必要があります。

10
URB

OS Xを使用している場合は、ファイルを開き、

表示 - >テキスト - >行末 - > Unix

メニュー項目、次に保存をクリックします。これはXCode 3.x用です。 XCode 4でもおそらく似たようなものです。

5
Vern Jensen

Linuxでdos2unixコマンドを使用して、保存したファイルを変換します。例:

dos2unix file_name
4
srpatcha

Pwc101の この記事 に対するコメントのおかげで、このコマンドはKali Linuxで機能しました。

sed -i s/{ctrl+v}{ctrl+m}// {filename}

括弧内のビット{}を必ず置き換えてください。すなわち{ctrl+m}は押すことを意味します Ctrl キーと M 一緒にキーを押します。

4
br3nt

リチャードのコメントから続く。これはあなたのファイルをUNIXの行末に変換する簡単な方法です。私のような人であれば、Windowsのメモ帳で作成してからLinuxで実行しようとしました。

  1. Notepad ++ (無料)のコピーを自分でダウンロードしてインストールします。
  2. スクリプトファイルをNotepad ++で開きます。
  3. ファイルメニュー - > 名前を付けて保存 - >
  4. タイプとして保存: Unix script file (*.sh;*.bsh)
  5. 新しい.shファイルをLinuxシステムにコピーします
  6. 最大実行可能ファイル数:chmod 755 the_script_filename
  7. ./the_script_filenameで実行してください。

その他の問題 このリンクを試してください

4
zuallauz

Kateでもこれを行うことができます。

  1. ファイルを開く
  2. ツールメニューを開く
  3. 行の終わり サブメニューを展開
  4. _ unix _ を選択
  5. 保存 ファイル。
3
Tjaart

スクリプト名の前にshを追加するだけで、私の場合はうまくいきます。

2
SkorpEN

あなたがTextMateまたは同様のプログラムを使用しているならば、名前を付けて保存してください、そして、エンコーディングではLFの代わりにCRLFを選んでください。

2
patapouf_ai

あなたがWindows環境であなたのスクリプトを書いて、あなたがunix環境でそれを実行したいとき、あなたはencodageについて注意する必要があります:

dos2unix $ filePath

2
Youssouf Maiga