AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 413144
Accepted
WEBjuju
WEBjuju
Asked: 2017-12-27 08:22:11 +0800 CST2017-12-27 08:22:11 +0800 CST 2017-12-27 08:22:11 +0800 CST

Saídas do Bash `sleep` __bp_preexec_invoke_exec

  • 772

Fundo

Estou executando um comando maior de uma linha. Ele está gerando inesperadamente (duas vezes por iteração) o seguinte:

__bp_preexec_invoke_exec "$_"

Aqui está o comando reduzido (removida outra atividade em loop):

for i in `seq 1 3`; do sleep .1 ; done

nota: depois de brincar com isso algumas vezes, ele inexplicavelmente para de imprimir a saída inesperada

O que eu tentei

  • Se eu remover sleep .5, não obtenho a saída inesperada
  • Se eu simplesmente executar sleep .5o prompt retorna, mas não há saída
  • Pesquisei no Google por __bp_preexec_invoke_exec, mas não consigo determinar como isso se aplica ao que estou fazendo

Pergunta

O que é __bp_preexec_invoke_exec "$_"?

Como posso executar isso sem a saída indesejada?


Mais informações sobre a solução graças a @gina2x:

Aqui está a saída dedeclare -f | grep preexec

    preexec_functions+=(preexec);
    __bp_preexec_interactive_mode="on"
__bp_preexec_invoke_exec ()
    if [[ -z "$__bp_preexec_interactive_mode" ]]; then
            __bp_preexec_interactive_mode="";
        __bp_preexec_interactive_mode="";
    local preexec_function;
    local preexec_ret_value=0;
    for preexec_function in "${preexec_functions[@]}";
        if type -t "$preexec_function" > /dev/null; then
            $preexec_function "$this_command";
            preexec_ret_value="$?";
    __bp_set_ret_value "$preexec_ret_value" "$__bp_last_argument_prev_command"
    if [[ -z "${iterm2_ran_preexec:-}" ]]; then
        __iterm2_preexec "";
    iterm2_ran_preexec="";
__iterm2_preexec ()
    iterm2_ran_preexec="yes";

Vejo muitas informações "iterm2" (estou em um Mac e usando o iTerm2.app).

Na verdade, quando tento reproduzir usando Terminal.app, não consigo reproduzir a saída inesperada .

Excelente investigação com declare -f- obrigado!

bash command-line
  • 1 1 respostas
  • 595 Views

1 respostas

  • Voted
  1. Best Answer
    gena2x
    2017-12-27T10:32:38+08:002017-12-27T10:32:38+08:00

    Parece que __bp_preexec_invoke_execfaz parte de https://github.com/rcaloras/bash-preexec/blob/master/bash-preexec.sh . E parece que há um bug nesse script.

    Esse projeto adiciona a funcionalidade 'preexec' ao bash adicionando armadilha DEBUG, eu não testei, mas posso imaginar que pode não funcionar corretamente da maneira que você vê. Verifique se ele está instalado em seu ambiente - você pode fazer isso por declare -f. Parece que com o bash mais recente você pode usar o PS0 em vez desse projeto, o que provavelmente faria o mesmo sem problemas que você vê.

    • 5

relate perguntas

  • Pub / sub de linha de comando sem um servidor?

  • Problema estranho ao passar variáveis ​​do arquivo de texto

  • Enquanto a linha lê mantendo os espaços de escape?

  • ordem de substituição de processos `te` e `bash`

  • Execute um script muito lento até que seja bem-sucedido

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve