shc com vários arquivos [RESOLVIDO]

1. shc com vários arquivos [RESOLVIDO]

Julio Albuquerque
julioalbuquerque

(usa Ubuntu)

Enviado em 08/11/2022 - 17:47h

Pessoal,
possuo um Shell Script que faz imports de outros arquivos desta forma:
source "${PROJECT_ROOT}"/variables/manifest.sh 


O script funciona 100% como esperado.
Mas tenho a necessidade de gerar ele em binário.
Estou utilizando o shc da seguinte forma:
sudo shc -r -v -f meuscript 


Roda sem nenhum erro e o binário é gerado.
Porém quando executo dá erro como se estivesse com erro no código:

server: line 2: $'\r': command not found
'put: unknown terminfo capability 'init
server: line 5: $'\r': command not found
server: line 51: warning: here-document at line 22 delimited by end-of-file (wanted `EOF')
server: -c: line 52: syntax error: unexpected end of file


Minha pergunta é: o shc reconhece esses imports e considera incuir todos os outros arquivos?

Rodando o script sem compilar não dá erro algum, pq no binário dá erro?



  


2. Re: shc com vários arquivos

Paulo
paulo1205

(usa Ubuntu)

Enviado em 09/11/2022 - 11:15h

A menção a “'\r'” nas mensagens de erro pode ser relevante.

Você editou esses arquivos no Windows? O Windows identifica suas quebras de linha com um par de caracteres (dois bytes, com os valores 13 e 10, respectivamente, correspondentes aos caracteres de controle CR (carriage return) e LF (line feed) do ASCII, e indicados na linguagem C e em várias ferramentas do UNIX como \r e \n, respectivamente), ao passo que o mundo UNIX usa apenas o caráter LF (\n) como indicador de fim de linha.

Trazer para o mundo UNIX um arquivo que tenha sido editado no Windows pode fazer com que algumas ferramentas produzam resultados inesperados ao encontrarem um \r sobrando antes do final da linha. Infelizmente, esse comportamento não é uniforme entre ferramentas: algumas podem considerar o \r como se fosse apenas mais um tipo de caráter de espaçamento e ignorá-lo, ao passo que outras podem considerá-lo como um caráter comum, tal com uma letra ou algarismo, e imaginar que ele faça parte de um nome de arquivo ou de um argumento que você tenha de passar ao comando que estiver invocando.

No seu caso, parece que quando você invoca o script em texto, o Shell está sendo mais leniente com esses caracteres espúrios do que quando invoca com a versão criptografada com o shc.

Como primeira abordagem investigativa, sugiro confirmar se é realmente o caso de os arquivos que você está incluindo usarem o formato do Windows, e convertê-los para o formato UNIX (quer via comando como o dos2unix ou da opção adequada dentro do seu editor de texto favorito).


... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)


3. Re: shc com vários arquivos [RESOLVIDO]

Julio Albuquerque
julioalbuquerque

(usa Ubuntu)

Enviado em 09/11/2022 - 15:31h


Era isso mesmo.
Estou utilizando o VSCode para escrever os scripts.
Para o shell, tem que configurar a IDE para deixar a sequência de fim de linha no padrão UNIX, ou seja, apenas LF.
Configurei isso e resolveu a questão do erro.

A questão de múltiplos arquivos compilar em um só, realmente pelo que estudei na Web, não é permitido.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts