* Re: [newbies] Bash and POSIX - local variables @ 2025-11-20 21:44 ` Leonid Krivoshein 2025-11-21 9:32 ` Alexander Lubyagin 0 siblings, 1 reply; 3+ messages in thread From: Leonid Krivoshein @ 2025-11-20 21:44 UTC (permalink / raw) To: devel-newbies Добрый день! On 11/20/25 18:28, Alexander Lubyagin wrote: > > Вот такой скрипт: > x=42 > echo $x > foo() { > local x=43 > echo $x > } > foo > echo $x > > Интерпретатор Bash: > $ /bin/bash4 script > 42 > 43 > 42 > > Интерпретатор Bash в режиме POSIX: > $ /bin/bash4 --posix script > 42 > 43 > 42 > > То есть, в POSIX-режиме тоже поддерживаются локальные для функций > переменные. > > Как же писать скрипт, после shebang в котором указан /bin/sh? > > Полагаться ли на поддержку локальных переменных? > Зависит от целеполагания. Поддержка local появилась давно. Во многих системах /bin/sh является симлинком на что-то, что совершенно не обязано быть POSIX-compliant shell. Например, даже в старых альтах это был bash3 с поддержкой local. Проверяйте ash, используйте subshell ( ... ), если так важна переносимость. По-моему, все, кто за неё радел, уже давно забили на это дело и пользуются всеми прелестями башизмов. :-) Куда важнее для правильного скриптования использовать shellcheck. -- WBR, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [newbies] Bash and POSIX - local variables 2025-11-20 21:44 ` [newbies] Bash and POSIX - local variables Leonid Krivoshein @ 2025-11-21 9:32 ` Alexander Lubyagin 2025-11-21 23:25 ` Leonid Krivoshein 0 siblings, 1 reply; 3+ messages in thread From: Alexander Lubyagin @ 2025-11-21 9:32 UTC (permalink / raw) To: devel-newbies 21.11.2025 00:44, Leonid Krivoshein пишет: >> [ ... ] >> >> Полагаться ли на поддержку локальных переменных? > > Зависит от целеполагания. Поддержка local появилась давно. Во многих > системах /bin/sh является симлинком на что-то, что совершенно не > обязано быть POSIX-compliant shell. Например, даже в старых альтах это > был bash3 с поддержкой local. Проверяйте ash, используйте subshell ( > ... ), если так важна переносимость. По-моему, все, кто за неё радел, > уже давно забили на это дело и пользуются всеми прелестями башизмов. > :-) Куда важнее для правильного скриптования использовать shellcheck. Да, по-моему, переносимость между shell-ами в соответствии со стандартом является реликтом. Будет ли нормальным заменить shebang-строки в модулях Альтератора на /bin/bash ? Там полно локальных переменных. Хотя в ash и pdksh локальные переменные и поддерживаются. $ ls -l /bin/sh lrwxrwxrwx 1 root root 3 фев 19 2019 /bin/sh-> sh4 -- ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [newbies] Bash and POSIX - local variables 2025-11-21 9:32 ` Alexander Lubyagin @ 2025-11-21 23:25 ` Leonid Krivoshein 0 siblings, 0 replies; 3+ messages in thread From: Leonid Krivoshein @ 2025-11-21 23:25 UTC (permalink / raw) To: devel-newbies On 11/21/25 12:32, Alexander Lubyagin wrote: > 21.11.2025 00:44, Leonid Krivoshein пишет: >>> [ ... ] >>> >>> Полагаться ли на поддержку локальных переменных? >> >> Зависит от целеполагания. Поддержка local появилась давно. Во многих >> системах /bin/sh является симлинком на что-то, что совершенно не >> обязано быть POSIX-compliant shell. Например, даже в старых альтах >> это был bash3 с поддержкой local. Проверяйте ash, используйте >> subshell ( ... ), если так важна переносимость. По-моему, все, кто за >> неё радел, уже давно забили на это дело и пользуются всеми прелестями >> башизмов. :-) Куда важнее для правильного скриптования использовать >> shellcheck. > > Да, по-моему, переносимость между shell-ами в соответствии со > стандартом является реликтом. > > Будет ли нормальным заменить shebang-строки в модулях Альтератора на > /bin/bash ? > Нет, потому что нет оснований для такой замены. В те времена, когда писалось большинство его модулей, это было фактически bash3. Под сложившиеся стили проектов необходимо подстраиваться. > Там полно локальных переменных. > Конечно, они давно поддерживаются практически везде. > Хотя в ash и pdksh локальные переменные и поддерживаются. > > $ ls -l /bin/sh > lrwxrwxrwx 1 root root 3 фев 19 2019 /bin/sh-> sh4 > Это вообще ни о чём не говорит. У данного симлинка в репо много провайдсов. https://packages.altlinux.org/ru/sisyphus/files/?q=%2Fbin%2Fsh -- WBR, Leonid Krivoshein. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-11-21 23:25 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-11-20 21:44 ` [newbies] Bash and POSIX - local variables Leonid Krivoshein 2025-11-21 9:32 ` Alexander Lubyagin 2025-11-21 23:25 ` Leonid Krivoshein
devel@ where you _can_ ask This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel-newbies/0 devel-newbies/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel-newbies devel-newbies/ http://lore.altlinux.org/devel-newbies \ devel-newbies@lists.altlinux.org devel-newbies@lists.altlinux.ru devel-newbies@lists.altlinux.com public-inbox-index devel-newbies Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel-newbies AGPL code for this site: git clone https://public-inbox.org/public-inbox.git