LINUX.ORG.RU

Знатокам POSIX


0

0

Заметил различия в команде echo в /bin/echo (coreutils) и dash.

nis@desktop:~$ /bin/echo '\\'
\\
nis@desktop:~$ sh
$ echo '\\'
\

Вопрос. Кто из этих 2х реализаций нарушает стандарты? Нужно ли писать баг-репорт в dash?

★★★★★

Ответ на: комментарий от www_linux_org_ru

> Вот только там тоже нет единобразия -- обычно /usr/bin/perl, но он может и в других местах быть...

Самый портабельный вариант:

#!/usr/bin/env perl

Deleted
()
Ответ на: комментарий от bigbit

> Причем тут shell?

> "if any of the operands contain a <backslash> character, the results are implementation-defined".

Интересный подвох... Shell тут тоже очень причём: в двойных кавычках он может намудрить. Про то, что ещё и echo может внести свою лепту, я почему-то не подумал.

const86 ★★★★★
()
Ответ на: комментарий от const86

> Shell тут тоже очень причём: в двойных кавычках он может намудрить.

В корневом посте ведь были одинарные кавычки.

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

> В корневом посте ведь были одинарные кавычки.

Да ну блин... В двойных кавычках портит, в одинарных нет. Поэтому не "причём тут shell?", а "shell тут ни при чём". А то из вашего поста могло показаться, якобы shell вообще не "портит" строки.

const86 ★★★★★
()
Ответ на: комментарий от const86

хз, но в нормальных системах он там :). Вот /bin/env на бсд нету.

true_admin ★★★★★
()
Ответ на: комментарий от const86

>> #!/usr/bin/env perl

> А кто-нибудь обещает, что env живёт в /usr/bin?


However, the location of env(1) may vary. Free-, Net-, OpenBSD and some Linux distributions (Debian) only come with /usr/bin/env. On the other hand, there's only /bin/env at least on OpenServer 5.0.6 and Unicos 9.0.2. (On some other Linux distributions (Redhat) it's located in /bin and there's a symbolic link from /usr/bin/env to it.) The env-mechanism is highly increasing convenience, but cannot strictly assure "portability" of a script.

http://www.in-ulm.de/~mascheck/various/shebang/

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.