[Comm] sh - bash
Artem Zolochevskiy
=?iso-8859-1?q?az_=CE=C1_zolochevskie=2Enet?=
Вс Окт 15 09:53:03 MSD 2006
Pavel Usischev wrote:
>> Собственно вопрос относительно написания скриптов
>> Отчего же тогда вижу везде #!/bin/sh (в стартовых сценариях итп) - если
>> этот sh такой старый и неумека?
>
> Как раз для переносимости скрипта. В ALT /bin/sh -- это особый вариант
> bash, в других системах это вполне может быть другой шелл, а bash вообще
> может отсутствовать.
Так вот и я так думал, а получается, что нет. Ибо в альтовских скриптах
(благодаря тому, что в альт sh это тот же bash) повсеместно используются
фичи, кот в "оригинальном" sh не прокатят. Получается о совместимости тут
речи нет.
>> Ну и, если можно, пример можете привести где употребление
>> #!/bin/sh или #!/bin/bash может сказаться на работоспособности скрипта.
>> Т.е. какая такая фича может быть в скрипте, что при использовании
>> #!/bin/sh он работать не будет.
>
> Об отличиях bash от изначального Bourne Shell можно почитать, дав команду:
>
> info bash 'Major Differences From The Bourne Shell'
читали. собственно вопрос и возник от того что этих Differences не наблюдаю
(ну вернее частично)
>
> Однако, насколько я понял, в ALT /bin/sh будет вести себя так же, как
> /bin/bash (возможно, я просто как-то не так проверял).
>
вот здесь и засада.
конкретный пример:
bash:
[artem на alt ~]$ A=5
[artem на alt ~]$ B=6
[artem на alt ~]$ C=$(($A+$B))
[artem на alt ~]$ echo $C
11
[artem на alt ~]$
альтовский sh:
sh-3.1$ A=5
sh-3.1$ B=6
sh-3.1$ C=$(($A+$B))
sh-3.1$ echo $C
11
sh-3.1$
а по идее в sh это не должно прокатывать
heirloom-sh:
$ A=5
$ B=6
$ C=$(($A+$B))
syntax error: `C=$' unexpected
$
Вот и получается что использование #!/bin/sh в альте явно не для
совместимости.
--
Artem Zolochevskiy
Kaliningrad, Russia
JID: az на jabber.org
Подробная информация о списке рассылки community