<html>
<head>
<meta content="text/html; charset=KOI8-R" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">кстати не помогло. Взял libreadline5 из
сизифа.. поставил онное.. в выводе export нету col/row а на
растягивание консоли или уменьшение ни mc ни irssi не реагируют<br>
<br>
17.12.2013 04:48, Dmitry V. Levin пишет:<br>
</div>
<blockquote cite="mid:20131217004857.GA5380@altlinux.org"
type="cite">
<pre wrap="">On Mon, Dec 16, 2013 at 08:16:23PM +0400, Sergey Vlasov wrote:
</pre>
<blockquote type="cite">
<pre wrap="">На самом деле, возможно, это баг в bash (точнее, во взаимодействии bash с
внешней библиотекой libreadline).
Дело в том, что в libreadline есть функция sh_set_lines_and_columns(),
которая как раз и добавляет в окружение текущего процесса переменные LINES
и COLUMNS:
<a class="moz-txt-link-freetext" href="http://git.altlinux.org/gears/r/readline.git?p=readline.git;a=blob;f=readline/shell.c;h=346f8113d43d742191f34f431d55e94316e4431d;hb=bc8ee94c5760cc286148d7ab25f2606c0eeeb52a#l121">http://git.altlinux.org/gears/r/readline.git?p=readline.git;a=blob;f=readline/shell.c;h=346f8113d43d742191f34f431d55e94316e4431d;hb=bc8ee94c5760cc286148d7ab25f2606c0eeeb52a#l121</a>
Однако ближе к началу файла shell.c есть следующий комментарий:
88 /* All of these functions are resolved from bash if we are linking readline
89 as part of bash. */
<a class="moz-txt-link-freetext" href="http://git.altlinux.org/gears/r/readline.git?p=readline.git;a=blob;f=readline/shell.c;h=346f8113d43d742191f34f431d55e94316e4431d;hb=bc8ee94c5760cc286148d7ab25f2606c0eeeb52a#l88">http://git.altlinux.org/gears/r/readline.git?p=readline.git;a=blob;f=readline/shell.c;h=346f8113d43d742191f34f431d55e94316e4431d;hb=bc8ee94c5760cc286148d7ab25f2606c0eeeb52a#l88</a>
И действительно, в самом bash тоже определяется функция
sh_set_lines_and_columns():
<a class="moz-txt-link-freetext" href="http://git.altlinux.org/gears/b/bash.git?p=bash.git;a=blob;f=bash/variables.c;h=1c782534e22d77e492cb66cad6d8666c9a911e23;hb=ab284e13150cb2edf3345256c6ddd919babf3a24#l864">http://git.altlinux.org/gears/b/bash.git?p=bash.git;a=blob;f=bash/variables.c;h=1c782534e22d77e492cb66cad6d8666c9a911e23;hb=ab284e13150cb2edf3345256c6ddd919babf3a24#l864</a>
В отличие от реализации в libreadline, функция из bash использует не
setenv(), а внутреннюю функцию bash bind_variable(), которая устанавливает
внутреннюю переменную shell, по умолчанию не экспортирующуюся в дочерние
процессы; именно такое поведение можно наблюдать сейчас в zsh - в скриптах
можно использовать переменные $LINES и $COLUMNS, но zsh не передаёт эти
переменные другим процессам, если не выполнить export явно.
Однако в ALT пакеты bash и libreadline собраны таким образом, что при
вызове sh_set_lines_and_columns() из функций libreadline всегда вызывается
реализация этой функции внутри libreadline - перекрытие её реализацией из
bash, предполагавшееся разработчиками, не выполняется.
</pre>
</blockquote>
<pre wrap="">
Вот уж действительно peculiar design.
Видимо, придется превратить все функции sh_*, определенные в файле
readline/shell.c, в weak alias'ы, и экспортировать их из libreadline.
Другого способа реализовать задуманное автором перекрытие функций
при использовании динамической линковки с libreadline я не вижу.
<a class="moz-txt-link-freetext" href="http://git.altlinux.org/tasks/110622/">http://git.altlinux.org/tasks/110622/</a>
</pre>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Sisyphus mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Sisyphus@lists.altlinux.org">Sisyphus@lists.altlinux.org</a>
<a class="moz-txt-link-freetext" href="https://lists.altlinux.org/mailman/listinfo/sisyphus">https://lists.altlinux.org/mailman/listinfo/sisyphus</a></pre>
</blockquote>
<br>
</body>
</html>