Summary: | Определение переменной для конкретной функции перезаписывает значение глобально | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> |
Component: | sh4 | Assignee: | placeholder <placeholder> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | cas, evg, glebfm, iv, ldv, mike, placeholder |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Vitaly Lipatov
2019-09-28 12:50:19 MSK
$ sh -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 4.4.23(1)-release a=1 a=2 a=2 $ bash -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 4.4.23(1)-release a=1 a=2 a=1 А можно узнать, какие планы по исправлению? И что делать? Искать проблему самому, переходить на использование bash? По моим сведениям, проблему вызывает использование --disable-restricted при сборке sh (В ответ на комментарий №3) > По моим сведениям, проблему вызывает использование > --disable-restricted > при сборке sh Прошу прощения, проблему вызывает отличие в названии файла: [lav@builder64 build-sh]$ md5sum sh4 bash 222e0437b72384f06b5182dec89615ac sh4 222e0437b72384f06b5182dec89615ac bash [lav@builder64 build-sh]$ ./bash -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 4.4.23(1)-release a=1 a=2 a=1 [lav@builder64 build-sh]$ ./sh4 -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 4.4.23(1)-release a=1 a=2 a=2 Хотелось бы отметить следующее: $ sh3 -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 3.2.57(1)-release a=1 a=2 a=2 $ bash3 -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 3.2.57(1)-release a=1 a=2 a=1 $ dash -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' a=1 a=2 a=2 $ rpm -qf `which dash` ash-0.5.8-alt1.2e5842258.x86_64 (Ответ для Dmitry V. Levin на комментарий #1) > $ sh -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' > 4.4.23(1)-release > a=1 > a=2 > a=2 > > $ bash -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' > 4.4.23(1)-release > a=1 > a=2 > a=1 Для bash5 разницы больше нет: [lav@builder64 beeheave]$ sh -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 5.2.15(1)-release a=1 a=2 a=1 [lav@builder64 beeheave]$ bash -c 'foo(){ echo "a=$a"; }; echo $BASH_VERSION; a=1; foo; a=2 foo; foo' 5.2.15(1)-release a=1 a=2 a=1 |