it-roy-ru.com

./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
369
Vineeth

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

:set fileformat=unix

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

:x! или :wq!

704
polymame

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

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

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

358
Richard

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

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

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

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

dos2unix configure

чтобы исправить это, или откройте его в vi и используйте :%s/^M//g;, чтобы заменить их всех (используйте CTRL+VCTRL+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 Forum , сработало для меня (много раз):

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

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

PS: вам нужно установить Perl на вашем компьютере с Unix/Linux.

10
URB

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

Вид -> Текст -> Концы строк -> Unix

пункт меню, затем Сохранить. Это для XCode 3.x. Возможно, что-то похожее в XCode 4.

5
Vern Jensen

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

dos2unix file_name
4
srpatcha

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

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

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

4
br3nt

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

  1. Загрузите и установите копию Notepad ++ (бесплатно).
  2. Откройте файл скрипта в Notepad ++.
  3. Меню Файл -> Сохранить как ->
  4. Сохранить как тип: Unix script file (*.sh;*.bsh)
  5. Скопируйте новый файл .sh в вашу систему Linux
  6. Maxe это исполняемый с: chmod 755 the_script_filename
  7. Запустите его с: ./the_script_filename

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

4
zuallauz

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

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

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

2
SkorpEN

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

2
patapouf_ai

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

dos2unix $ filePath

2
Youssouf Maiga