avva: (Default)
[personal profile] avva
(понятно будет только программистам)

Убил 20 минут на поистине идиотскую проблему; почему-то скрипт на перле не запускался напрямую "./xxx.pl", хотя "perl xxx.pl" работало отлично. Оказалось, что строчка shellbang

#!/usr/bin/perl

не работала, потому что она была не

#!/usr/bin/perl\n

а

#!/usr/bin/perl\r\n

(видимо, кто-то редактировал скрипт на Windows-системе в какой-то момент...)

Я ненавижу компьютеры.

Date: 2005-07-31 08:39 am (UTC)
From: [identity profile] bolk.livejournal.com
Когда-то очень давно тоже с этим сталкивался :) Тогда же, в первый раз запустив vi, увидел в конце этой строки "^M" и Рамазаныч, бывший веб-мастер ksu.ru (даже лица память не сохранила, столько лет прошло), объяснил мне что к чему. Или это не он объяснил... ничего не помню.

Date: 2005-07-31 08:43 am (UTC)
From: [identity profile] avva.livejournal.com
Ага, только на этих машинах /bin/vi это на самом деле vim, который (по умолчанию по крайней мере) никакие ^M не показывает. А то я бы сразу понял. Ненавижу.

Date: 2005-07-31 08:48 am (UTC)
From: [identity profile] bolk.livejournal.com
Мои знания vi (и vim) много лет остаются на уровне "a,i,dd,x,:,q,!,w,/,?". Так что как вернуть в vim "^M" я не знаю :)

Date: 2005-07-31 12:37 pm (UTC)
From: [identity profile] nikto.livejournal.com
А не подскажет ли кто, есть ли что-то похожее на vi/vim, работающее под Win, при этом позволяющее работать с кириллицей? Я видел порт vim под Windows, но при переключении раскладки в нем сразу все хоткеи перестают работать, и поэтому использовать его почти невозможно.

Date: 2005-08-01 12:48 pm (UTC)
From: [identity profile] livsy.livejournal.com
Вообще-то есть хороший порт emacs. ;)

Редакторов под win32 море. Нужны какие-то особенные функции vim или просто консольный редактор?

Date: 2005-08-02 09:50 am (UTC)
From: [identity profile] nikto.livejournal.com
Хочется не обязательно консольный редактор, но такой, чтобы текст ощущался, что называется, "на кончиках пальцев". Принципы, по которым построен интерфейс того же vim, кажется, позволяют этого достичь, несмотря на довольно крутую learning curve. После того, как научишься печатать вслепую, мне кажется, освоение какого-нибудь такого редактора - это следующий шаг.

Говорите, есть порт emacs под win... надо будет посмотреть.

Date: 2005-07-31 04:48 pm (UTC)
From: (Anonymous)
Doslowno !

Date: 2005-07-31 12:50 pm (UTC)
From: [identity profile] jsn.livejournal.com
но он говорит "dos mode", или [converted] [что-то], не помню.
хотя, наверное, это так бросается в глаза только если знаешь про данные конкретные грабли.

Date: 2005-07-31 08:00 pm (UTC)
From: [identity profile] cema.livejournal.com
А надо пользовать имакс.

Date: 2005-08-01 12:49 pm (UTC)
From: [identity profile] livsy.livejournal.com
Q: Меня девки не любят, что делать?
A: Ах ты маленький извращенец, переходи на vi!

:)

Date: 2005-07-31 08:45 am (UTC)
From: [identity profile] tejblum.livejournal.com
Потому что надо было писать #!/usr/bin/perl -w

Date: 2005-07-31 08:51 am (UTC)
From: [identity profile] avva.livejournal.com
*безумный смех*

Date: 2005-07-31 08:55 am (UTC)
ocehb: (Default)
From: [personal profile] ocehb
ln -s /usr/bin/perl $'/usr/bin/perl\r'

Date: 2005-07-31 09:12 am (UTC)
From: [identity profile] gaal.livejournal.com
Yeah, that sucks, and the shell gives a completely infuriating error message too. Here's the trick I use to avoid this:

#!/usr/bin/perl -w

Once perl gets to your script, it's tolerant about lineendings, even in the shebang line.

This also turns on warnings non-lexically, which may not be what you want. In that case, use this:

#!/usr/bin/perl --

Date: 2005-07-31 09:13 am (UTC)
From: [identity profile] gaal.livejournal.com
(Oh, I see someone already suggested that. Never mind then.)

Date: 2005-07-31 11:07 am (UTC)
From: [identity profile] infanticida.livejournal.com
http://www.livejournal.com/interests.bml?mode=add&intid=4453547
присоединяйся тогда ;)

Date: 2005-07-31 11:24 am (UTC)
From: [identity profile] 0qwerty0.livejournal.com
last time I worked on Unix, I configged emacs to display \r as a bold red semicolon. useful - especially since it can appear anywhere, in every data or conf file DOS has touched...
best of!

Date: 2005-07-31 11:39 am (UTC)
From: [identity profile] olkab.livejournal.com
Good idea. I'll think of using it.

Date: 2005-08-01 06:10 pm (UTC)
From: [identity profile] zigmar.livejournal.com
Thats nice. But usually when emacs detect dos text file, it hides /r, but writes "dos mode" in status line.

Date: 2005-07-31 12:32 pm (UTC)
From: [identity profile] avnik.livejournal.com
Я полагаю можно чуть полечить строчку в fs/binfmt_misc.c
И уравнять в правах \n и \r\n

if ((cp = strchr(bprm->buf, '\n')) == NULL)
cp = bprm->buf+BINPRM_BUF_SIZE-1;

Хотя как-то это идеологически неверно

Date: 2005-07-31 01:50 pm (UTC)
From: [identity profile] avva.livejournal.com
А правильно бы, несмотря на идеологическую неверность, по-моему ;)
(хотя пуристы наверное не позволят, да)

Date: 2005-07-31 01:24 pm (UTC)
From: [identity profile] bespechnoepero.livejournal.com
Давно уже пора все порушить и переделать заново. Новая ОС, новые языки.

Date: 2005-07-31 01:28 pm (UTC)
From: [identity profile] arbat.livejournal.com
По-моему, правильнее "shebang".

Date: 2005-07-31 01:51 pm (UTC)
From: [identity profile] avva.livejournal.com
и так и этак есть.

Date: 2005-07-31 02:01 pm (UTC)
From: [identity profile] arbat.livejournal.com
Ну, есть и "стекляный" (3440 раз в гугле), но все же "стеклянный" правильнее. И не только потому, что "стеклянный" в гугле встречается в 35 раз чаще.

В нашем случае частотность вполне может служить критерием правильности. "shebang" в гугле попадается на 425,000 страницах, а "shellbang" - на 1,150. Тут уже разница в 369 раз.

Date: 2005-07-31 01:29 pm (UTC)
From: [identity profile] bespechnoepero.livejournal.com
Лучше конечно уж тогда и новые компьютеры, потому что современные тоже продукт длительного достраивания, согласовываня старых частей с новыми, куча обходных путей, компромиссов, багов.

Date: 2005-07-31 02:10 pm (UTC)
From: [identity profile] furry.livejournal.com
нда...в привычке говорить perl -w - что-то есть, определенно..;-)

Date: 2005-07-31 04:21 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, теперь я понимаю ;)

Date: 2005-07-31 02:17 pm (UTC)
From: [identity profile] alexis-m.livejournal.com
Втречал на оборот.
Админ под линуксом редактировал скрипт, выполняющийся на пользовательской машине при регистрации. Первой, как обычно, прибежала бухгалтерия. :)

Date: 2005-07-31 03:54 pm (UTC)
From: [identity profile] rsc-gai.livejournal.com
А при чём тут компьютеры. Я когда-то искал ошибки и в 1 бит.

Date: 2005-07-31 06:43 pm (UTC)
From: [identity profile] evilmeans.livejournal.com
проблема с компьютерами в том, что они делают то, что вы приказали им делать, а не то что вы хотите чтобы они делали

Date: 2005-07-31 08:03 pm (UTC)
From: [identity profile] cema.livejournal.com
Прапорщик, остановите поезд. — Поезд, стой! Раз, два.

Date: 2005-07-31 08:29 pm (UTC)
From: [identity profile] iseg.livejournal.com
приходите к нам работать. :)
у нас с 1998 года из-под unix нельзя закоммитить текстовый файл с \r-ами

Date: 2005-08-01 07:22 am (UTC)
From: [personal profile] alll
По моим наблюдениям, при взаимодействии win и *nix перловиков это самые распостранённые грабли после прав на файлы. По идее можно предохраняться пробелом в конце строки.

Date: 2005-08-01 07:24 am (UTC)
From: [identity profile] avva.livejournal.com
Я знаю, почему я на них до сих пор не наступал: потому что когда я работаю в перле и там и там, я всё равно должен помнить, что под Win мне надо писать "perl foo.pl", и поэтому под юниксом пишу то же самое и не забочусь о прямом запуске.

Date: 2005-08-01 08:03 am (UTC)
From: [identity profile] potan.livejournal.com
Не лечится. В лучшем случае \r будет воспинят как арлумент.

Re: В лучшем случае

Date: 2005-08-01 08:54 am (UTC)
From: [personal profile] alll
Именно так.

Re: Не лечится

Date: 2005-08-01 08:55 am (UTC)
From: [personal profile] alll
Никто и не говорил "лечить". Предохраняться.

Date: 2005-08-01 08:02 am (UTC)
From: [identity profile] potan.livejournal.com
Я в свое время в ядре поправил, что бы такие скрипты запускались.
Кстати, для FreeBSD есть хинт: написать #!/usr/bin/perl#. Он последний # обрабатывает так же, как и \n. А вот в Linux это не работает.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 06:07 am
Powered by Dreamwidth Studios