Combinando Script Bash e Recursos de Script em um Executável

1

Ao tentar executar um script bash, ele geralmente é executado dentro de algum diretório e requer acesso a recursos locais. Eu queria saber se havia uma maneira de combinar o script bash e os recursos (tudo o mais no diretório) em um executável, para que eu só precisaria desse executável autônomo para executar o script bash.

    
por UCLA 01.06.2016 / 23:35

1 resposta

0

Você provavelmente não deve combinar um script Bash em um executável, por essas razões, mas se você precisar de um executável , você pode usar SHC (tecnicamente um algoritmo de ofuscação). SHC "converte" o script em código C e o compila.

Chegamos então ao problema dos múltiplos arquivos. Como o SHC só pode receber um arquivo como entrada, você terá que combinar todos os arquivos em um. Obviamente isto não é possível, porque se fosse, você já teria feito isso, mas, você pode mover todos os outros arquivos para um local, e então fazer com que o programa principal chame esses arquivos.

Uma alternativa

Outra alternativa mais recomendável é mover todos os arquivos necessários para um diretório e, em seguida, escrever um programa separado que os chame. Por exemplo, se o seu programa exigir três arquivos, x , y e z.txt , você poderá escrever outro script, n , que chama x e y . Tanto x como y podem chamar z.txt , porque estão no mesmo diretório.

Simplesmente marque o programa principal ( n no exemplo) como executável e, em seguida, mova-o para qualquer local onde você precise dele. Como o local dos arquivos necessários não muda, não importa para onde você move o arquivo principal, pode sempre acessar os outros.

Isso inevitavelmente fica aquém do objetivo pretendido, mas é o mais próximo possível. Se você precisar dos "arquivos necessários" para acessar um arquivo onde quer que o programa seja movido, você pode simplesmente fazer com que o programa principal passe o nome desse arquivo como um argumento de linha de comando. Se necessário, você pode escrever o programa principal em C para que seja um arquivo binário executável, embora eu perceba que esse não era seu objetivo original, pode economizar tempo e espaço nos procedimentos de chamada.

    
por 02.06.2016 / 02:32