Pular para o conteúdo

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

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

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

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!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Re: Há explicação pra essa rameiragem?

Melhor resposta

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. Re: Há explicação pra essa rameiragem? [RESOLVIDO]

Melhor resposta

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]

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]

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]

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]

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]

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]

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!

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder