Tempo de início longo do MC devido à função bash

4

Eu tenho a próxima função bash para garantir novas linhas após os comandos:

user at terra in ~
$ echo "m"
m
user at terra in ~
$ echo -n "m"
m↵

E a própria função em .bashrc :

function prompt_command {
    # get cursor position and add new line if we're not in first column
    echo -en "3[6n" && read -sdR CURPOS
    [[ ${CURPOS##*;} -gt 1 ]] && echo "$(tput setab 1)↵$prompt_reset"
}
PROMPT_COMMAND=prompt_command

Quando tenho PROMPT_COMMAND set - o MC começa de 10 a 30 segundos, mas quando comentado - quase instantaneamente.

Por que e como isso pode ser corrigido sem desabilitar esse problema?

strace , é melhor olhar em volta de 13:59:06 , há um atraso de 9 segundos lá ... (normal < a href="http://paste.ubuntu.com/8485133/"> strace para comparar)

    
por m0nhawk 03.10.2014 / 07:07

2 respostas

2

MC executa o bash em um terminal. Ele deixa TERM definido para o mesmo valor que o terminal em que o MC está sendo executado, mas parece que ele buffers ou filtra algumas trocas entre o shell inferior e o terminal.

Você pode querer usar diferentes personalizações quando o bash estiver sendo executado como um subprocesso direto do MC. Como o shell inferior do MC mostra apenas a linha de prompt, não há muito sentido em se preocupar com a posição do cursor: apenas adicione sistematicamente uma nova linha.

if [[ "$(ps -o comm= -p $PPID)" == "mc" ]]; then
  PS1=$'\n'$PS1
else
  function prompt_command {
    # get cursor position and add new line if we're not in first column
    echo -en "3[6n" && read -sdR CURPOS
    [[ ${CURPOS##*;} -gt 1 ]] && echo "$(tput setab 1)↵$prompt_reset"
  }
  PROMPT_COMMAND=prompt_command
fi
    
por 04.10.2014 / 03:10
3

Ele está esperando por entrada de stdin, tanto quanto eu entendo.

'3021  13:58:57 read(0,  <unfinished ...>
3019  13:59:06 <... select resumed> )   = 0 (Timeout)'

Você precisa encontrar o que está fazendo. No entanto, meu palpite:

read -sdR CURPOS

Você pode remover esse read para tentar corrigir o problema ou alterar seu tempo limite

    
por 03.10.2014 / 13:48