Como rastrear uma mensagem de erro do terminal? [RESOLVIDO]

1. Como rastrear uma mensagem de erro do terminal? [RESOLVIDO]

Rômulo Pinheiro Costa
PinheiroCosta

(usa Fedora)

Enviado em 23/03/2021 - 09:57h

Esta mensagem aparece toda vez que abro o terminal (GNOME):

bash: eval: linha 335: encontrado EOF inesperado enquanto procurava por `'' correspondente
bash: eval: linha 336: erro de sintaxe: fim prematuro do arquivo

De acordo com a mensagem, o problema está localizado entre as linhas 335 e 336 de algum arquivo. mas o .bashrc (arquivo de inicialização do terminal) não chega a ter 335 linhas pois eu uso o Bash_it, ou seja, a maior parte do script vem de outras fontes.

$ cat .bashrc | grep "source"
source "$BASH_IT"/bash_it.sh
source "$ZZPATH"


$ wc -l .bashrc .bash_it/bash_it.sh /usr/local/bin/funcoeszz
80 .bashrc
159 .bash_it/bash_it.sh
20551 /usr/local/bin/funcoeszz
20790 total

Como fazer para encontrar a o motivo da mensagem de erro, já que o prompt não me diz de qual arquivo pertence?

OBS: a mensagem começou a aparecer após a instalação de alguns programas com sudo:

sudo dnf install mpv
sudo dnf install fzf
sudo pip install ueberzug
sudo dnf groupinstall "X Software Development"



EDIT: O arquivo .bash_profile somente aponta para o .bashrc



  


2. MELHOR RESPOSTA

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 23/03/2021 - 11:20h

Vc pode executar seu bash assim:


bash -x script.sh


Ou colocar isso no shebang:


#!/bin/bash -x

--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh

3. Re: Como rastrear uma mensagem de erro do terminal? [RESOLVIDO]

Rômulo Pinheiro Costa
PinheiroCosta

(usa Fedora)

Enviado em 23/03/2021 - 12:28h


renato_pacheco escreveu:

Vc pode executar seu bash assim:


bash -x script.sh


Ou colocar isso no shebang:


#!/bin/bash -x

--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Nossa Renato, que dica valiosa cara! Muito obrigado.
Invocar o bash com o opção -x faz com que ele execute o script em modo de rastreamento. Depois de executar o comando:
bash -x .bashrc 


recebi uma saída com tudo que o script executou linha por linha, mostrando mais de 2 mil linhas de código. Tudo que precisei fazer foi redirecionar a saída para um arquivo:
bash -x .bashrc 2> log 


E agora posso analizar melhor o código. Com um:
$ cat -n log | head -338 | tail -15 

e dessa forma consegui separar um trecho do código onde acho que o problema pode estar.

324 ++++ cut -d . -f 2
325 +++ extension=aliases
326 +++ BASH_IT_LOG_PREFIX='aliases: fuck: '
327 +++ _log_debug 'Loading component...'
328 +++ about 'log a debug message by echoing to the screen. needs BASH_IT_LOG_LEVEL >= BASH_IT_LOG_LEVEL_ALL'
329 +++ :
330 +++ param '1: message to log'
331 +++ :
332 +++ example '$ _log_debug "Loading plugin git..."'
333 +++ :
334 +++ group log
335 +++ :
336 +++ [[ '' -ge 3 ]]
337 +++ return 0
338 +++ source /home/romulo/.bash_it/enabled/150---fuck.aliases.bash


Parece que na linha 336 realmente tem um teste de verificação que avalia se uma string vazia é maior que 3. e Isso me parece errado.

336 +++ [[ '' -ge 3 ]]


Pelas linhas em torno dessa verificação, parece que o script pertence ao .bash_it.sh.
Como eu faço pra buscar esse trecho de código de forma recursiva a partir do diretório atual?

Será que estou no caminho certo?


4. Re: Como rastrear uma mensagem de erro do terminal? [RESOLVIDO]

Rômulo Pinheiro Costa
PinheiroCosta

(usa Fedora)

Enviado em 23/03/2021 - 12:54h

Será que estou no caminho certo?


Problema Resolvido

Resolvi desinstalar o bash_it, e a mensagem de erro sumiu. vou tentar Reinstalar pra ver se o problema é da nova versão.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts