Исправление Zubok, (текущая версия) :
Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.
Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня (/src/subshell/common.c). Там в subshell, если он является dash, передается pwd>&%d
, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:
$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number
Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.
$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor
В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.
Исправление Zubok, :
Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.
Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня (/src/subshell/common.c). Там в subshell, если он является dash, передается pwd>&%d
, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:
$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor
$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number
Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.
В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.
Исходная версия Zubok, :
Почему этот select работает нормально в Debian, но зависает и отваливается по таймауту в остальных при subshell=DASH - никаких мыслей нет.
Откуда ошибка идет там более-менее понятно. В исходном коде mc какая-то фигня. Там в subshell, если он является dash, передается pwd>&%d
, чтобы prompt сформировать. Вместо %d подставляется subshell_pipe[WRITE]. dash на этот subshell_pipe[WRITE] выдает ошибку типа:
$ dash -c 'pwd>&9'
dash: 1: 9: Bad file descriptor
$ dash -c 'pwd>&10'
dash: 1: Syntax error: Bad fd number
Скорее всего, файловый дескриптор, который передается в скрипт, состоит из двух цифр, а dash их не понимает. Похоже, он только от 0 до 9 принимает.
В общем, subshell умирает раньше времени из-за ошибки, не дойдя до конца. А mc сидит в select с тамаутом 10 секунд.