Há explicação pra essa rameiragem? [RESOLVIDO]

1. Há explicação pra essa rameiragem? [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 13/01/2024 - 13:37h

Tava aqui testando umas paradas ai e de repente fui ver minhas anotações sobre compiladores.
Dai fui executar o seguinte script via terminal do VScode:
#!/bin/bash
source ~/.bashrc #pro caso de ter modificado algo lá
antlr4 -o ./test -no-visitor logic.g4
cd ./test
javac *.java

Acontece o seguinte meus camaradas raparigueiros: quando chega ali na linha do antlr4, o bash para ali mesmo, só que o cabaço do comando é um alias, mesmo estando definido no .bashrc e mesmo assim não é reconhecido, fica como comando "not found".

Pesquisando aqui ninguém sabe ao certo o que acontece, já aconteceu com outros com exatamente alias no bash.

Alguma explicação saudável pra dizer o porquê senhor bash não executa o comando?
NOTA:
--se eu rodar antlr4 via terminal (sem script) ele executa certinho.

https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 13/01/2024 - 22:59h

SamL escreveu:

Tava aqui testando umas paradas ai e de repente fui ver minhas anotações sobre compiladores.
Dai fui executar o seguinte script via terminal do VScode:
#!/bin/bash
source ~/.bashrc #pro caso de ter modificado algo lá
antlr4 -o ./test -no-visitor logic.g4
cd ./test
javac *.java

Acontece o seguinte meus camaradas raparigueiros: quando chega ali na linha do antlr4, o bash para ali mesmo, só que o cabaço do comando é um alias, mesmo estando definido no .bashrc e mesmo assim não é reconhecido, fica como comando "not found".

Pesquisando aqui ninguém sabe ao certo o que acontece, já aconteceu com outros com exatamente alias no bash.

Alguma explicação saudável pra dizer o porquê senhor bash não executa o comando?
NOTA:
--se eu rodar antlr4 via terminal (sem script) ele executa certinho.

https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!

Boa noite SamL.
Não sei explicar, mas, se executar como:
. script
pontoespaçoscript

Funciona, é como se "digitasse no terminal".
Executando dessa forma, a var $0 é "/bin/bash"
Se executar ./script, a var $0 é script.

É isso...

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/01/2024 - 20:07h


SamL escreveu:

@msoliver com ./ ou sem ele continua do mesmo jeito, isso que é esquisito.


https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!

SamL, segue o script que usei para testes:
#!/usr/bin/env bash
lin3="echo "$(sed -r 's/.{7}/& /g' <<< '&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;')"";

#[[ "$0" =~ (/bin/bash) ]] && echo casou || { echo naocasou; exit 0;}
echo "\$0:$0";

$lin3
echo "Usando o alias \"dnss, kipp e mip\"."
$lin3
dnss
$lin3
kipp
mip
$lin3

Tenho "Aliases" no .bashrc e em .bash_aliases,
seguem abaixo:
alias dnss='awk "/^nam.* [0-9.]+/ {print \$2}" /etc/resolv.conf'
alias kipp='kdialog --passivepopup "<h1>IP: $(wget -qO- http://ip-api.com/csv/?fields=8192)</h1>"; 2'
alias mip='echo $(wget -qO- http://ip-api.com/csv/?fields=8192)';
-------------------------------------------------------------------------------
bash --version
GNU bash, versão 5.1.4(1)-release (x86_64-pc-linux-gnu)

-------------------------------------------------------------------------------
Caso execute como:
./script.sh
Tenho o ERRO para cada alias:
script.sh: linha nn: nomedoalias: comando não encontrado

Att.: Marcelo Oliver

4. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Tipoff *tipoff
tipoff

(usa Nenhuma)

Enviado em 13/01/2024 - 21:11h

Seu alias está definido no ~/.bashrc ou ~/.bash_profile?



5. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

aguamole
aguamole

(usa KUbuntu)

Enviado em 14/01/2024 - 04:23h

msoliver escreveu:
Boa noite SamL.
Não sei explicar, mas, se executar como:
. script
pontoespaçoscript

Funciona, é como se "digitasse no terminal".
Executando dessa forma, a var $0 é "/bin/bash"
Se executar ./script, a var $0 é script.

É isso...

Rapais, isso é bug do Bash?


6. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 14/01/2024 - 04:55h


@tipoff e @msoliver
Desculpa ai a demora.

No caso, o alias eu coloquei no .bashrc e executando pelo terminal somente antlr4 roda sem erro.
@msoliver com ./ ou sem ele continua do mesmo jeito, isso que é esquisito.


https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!



7. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Tipoff *tipoff
tipoff

(usa Nenhuma)

Enviado em 14/01/2024 - 11:25h


SamL escreveu:


@tipoff e @msoliver
Desculpa ai a demora.

No caso, o alias eu coloquei no .bashrc e executando pelo terminal somente antlr4 roda sem erro.
@msoliver com ./ ou sem ele continua do mesmo jeito, isso que é esquisito.


https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!


Somente o antlr4 roda sem erros? O javac ali não roda?

Posta o seu ~/.bashrc


8. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 15/01/2024 - 07:37h


msoliver escreveu:

Caso execute como:
./script.sh
Tenho o ERRO para cada alias:
script.sh: linha nn: nomedoalias: comando não encontrado

Ah tá, justo, agora entendi o lance com o "$0", Marcelo! É o meu caso então.
Mas desculpa a noobice, e como seria a solução pra rodar o script.sh com os alias certinhos? Ou não tem jeito?
Pesquisei via google mas não achei uma solução definitiva, daí acho que talvez nem tenha, mas vai que alguém daqui saiba? rsrsrs


https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!



9. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 15/01/2024 - 07:54h


SamL escreveu:


msoliver escreveu:

Caso execute como:
./script.sh
Tenho o ERRO para cada alias:
script.sh: linha nn: nomedoalias: comando não encontrado

Ah tá, justo, agora entendi o lance com o "$0", Marcelo! É o meu caso então.
Mas desculpa a noobice, e como seria a solução pra rodar o script.sh com os alias certinhos? Ou não tem jeito?
Pesquisei via google mas não achei uma solução definitiva, daí acho que talvez nem tenha, mas vai que alguém daqui saiba? rsrsrs

Resolvido:
--com o que o Marcelo explicou ai, ficou mais fácil de procurar uma solução.
Então, eu vi num tópico de outro site que se colocar o parâmetro -i (interactive mode) os alias vão funcionar ok mesmo executando com ./script.
Seria algo como:
script.sh
#!/bin/bash -i
#resto script

Se o script.sh acima for executado com o -i ali em cima, então, os alias vão ser reconhecidos sem problema.

Obrigado pessoal!


https://nerdki.blogspot.com/ acessa ai, blog dedicado Paranóia!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts