|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 10 Apr 2002 09:36:01 To : yx Subject : Re: Скрипт... - Ох, спасибо!!! -------------------------------------------------------------------------------- >>> yx wrote: > >> # в первой строке, если не `#!/специфик/шелл', лучше > >> -#!/bin/sh > >> +: > > > > Это почему? Вполне нормально /bin/sh для POSIX. > > > начиная скрипт с `:' (или любым другим отличным от `#' (`:' хороший выбор) - > скрипт всегда будет исполнен bourne шеллом (sh) (или борн-совместимым) > независимо от логин шелла, и независимо от того что за дефолтный > #!/bin/sh шелл в системе. Осталось самую малость - чтобы ядро поняло, что то, что начинается с `:', исполнялось лучшим sh'ем из имеющихся;)) Автоматом это не выполняется ни на FreeBSD ни на linux ни на любом другом юниксе из доступных мне: ядро ищет сигнатуры двоичных форматов или shebang, а ":\n" в этот набор не входит. Определенный интеллект в этом плане имеет libc - при отвале exec*() с кодом ENOEXEC (то есть не найдена ни одна сигнатура) пытается запустить скрипт через /bin/sh - но к execve() это не относится, и выбора "лучшего sh" не производится. > Кроме того, на древних сист-х отработается, > а с ksh получим и более быстрое исполнение, чем в случае с #!/bin/sh :) > > Bourne shell scripts should have a ":" as first line. точка. По описанному выше Ваш рецепт абсолютно неприемлем. > более подробное "почему" см. в comp.unix.shell архивах. URL в студию. Думаю, Вы что-то не так прочли или воспользовались непроверенным советом. /netch --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/7368c886c6fd.html, оценка из 5, голосов 10
|