[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