./configure:/bin/sh ^ M: плохой интерпретатор

Я пытаюсь установить lpng142 на мою систему с питанием 12. Кажется, проблема для меня. Я получаю эту ошибку

[[email protected] lpng142]# ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
[[email protected] 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

Ответ 1

Чтобы исправить, откройте свой script с помощью vi или vim и войдите в режим командной строки vi (клавиша Esc), затем введите следующее:

:set fileformat=unix

Наконец, сохраните его

:x! или :wq!

Ответ 2

Похоже, у вас есть файл окончания строки dos. Подсказка - ^M.

Вам нужно повторно сохранить файл, используя окончание строки Unix.

У вас может быть утилита командной строки dos2unix, которая также сделает это для вас.

Ответ 3

Или если вы хотите сделать это с помощью script:

sed -i 's/\r//' filename

Ответ 4

Ваш файл конфигурации содержит окончание строк CRLF (стиль Windows) вместо простых строк строки LF (стиль unix). Передали ли вы его с помощью FTP-режима ASCII из Windows?

Вы можете использовать

dos2unix configure

чтобы исправить это или открыть его в vi и использовать :%s/^M//g;, чтобы подставить их все (используйте CTRL + V, CTRL + M, чтобы получить ^ M)

Ответ 5

Вы можете использовать следующую команду для исправления

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

Ответ 6

Если вы не смогли найти команду запуска,

CentOS:

# yum install dos2unix*

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

Ubuntu/Debian:

# apt-get install dos2unix

Ответ 7

Обычно это происходит, когда вы редактировали файл из Windows и теперь пытаетесь выполнить его с какого-либо компьютера на основе unix.

Решение, представленное на Linux Forum, работало для меня (много раз):

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

Надеюсь, что это поможет.

PS: вам нужно установить perl на вашей машине unix/linux.

Ответ 8

Если вы находитесь в OS X, вы можете изменить окончания строк в XCode, открыв файл и выбрав

Вид → Текст → Конец строки → Unix

затем выберите "Сохранить". Это для XCode 3.x. Вероятно, что-то подобное в XCode 4.

Ответ 9

Далее из комментария Ричарда. Здесь простой способ конвертировать ваш файл в конец строки UNIX. Если вы похожи на меня, вы создали его в Windows Notepad, а затем попытались запустить его в Linux - плохая идея.

  • Загрузите и установите себе копию Notepad ++ (бесплатно).
  • Откройте файл script в Notepad ++.
  • Меню "Файл" Сохранить как
  • Сохранить как тип: Unix script file (*.sh;*.bsh)
  • Скопируйте новый .sh файл в свою систему Linux.
  • Maxe его исполняемый файл: chmod 755 the_script_filename
  • Запустите его с помощью ./the_script_filename

Любые другие проблемы попробуйте эту ссылку.

Ответ 10

Благодаря комментарию pwc101 этот пост эта команда работала в Kali Linux.

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

Убедитесь, что вы заменили биты в скобках, {}. То есть {ctrl+m} означает нажатие клавиши Ctrl и клавиши M.

Ответ 11

Вы также можете сделать это в Кейт.

  • Откройте файл
  • Откройте меню Сервис
  • Разверните подменю Конец строки
  • Выберите UNIX
  • Сохранить файл.

Ответ 12

Используйте команду dos2unix в linux для преобразования сохраненного файла. Пример:

dos2unix file_name

Ответ 13

Просто добавив sh перед именем script, заставьте его работать в моем случае.

Ответ 14

Если вы используете TextMate или аналогичную программу, сохраните как, а затем в кодировках выберите LF вместо CRLF.

Ответ 15

Когда вы пишете свой script в среде Windows и хотите запустить его в среде unix, вам нужно быть осторожным в кодировании:

dos2unix $filePath