É possível dar alguma extensão ao arquivo executável do Linux?

2

Eu quero saber se posso usar extensões diferentes para executáveis Linux em vez de usar a extensão ".sh" ou ".o".

    
por Gowthaman15 21.10.2014 / 12:50

3 respostas

4

Sim, você pode usar o que quiser.

Extensões não importam em sistemas * nix. Para arquivos binários (como um programa C compilado), o programa será auto-executável. Para blocos de texto executáveis, o que importa é a linha shebang no topo:

#!/bin/bash

Isto diz ao shell para interpretar o arquivo com o Bash, por exemplo.

É claro que as extensões ainda são relevantes para sessões gráficas.

    
por 21.10.2014 / 12:53
1

Ao contrário do Windows, o Linux (e outros sistemas operacionais baseados em Unix) usa Magic Numbers diferenciar entre diferentes tipos de arquivos e, consequentemente, não se preocupa com a extensão do arquivo.

O número mágico (às vezes assinatura do arquivo ) é um padrão que é comparado a um banco de dados para trabalhar com o tipo de arquivo.

Você pode usar o comando file para determinar o tipo de arquivo:

$ file /usr/bin/bash
/usr/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x2af417cdc1684a2ab609fcab847dfee8cc643713, stripped

ou:

$ file /etc/init.d/network
/etc/init.d/network: Bourne-Again shell script, ASCII text executable

Se você renomear um arquivo e alterar sua extensão, ele não será exibido:

$ cp /etc/init.d/network ~/network.jpg
$ file ~/network.jpg
/home/gareth/network.jpg: Bourne-Again shell script, ASCII text executable
$ mv ~/network.jpg ~/network.exe
$ file ~/network.exe
/home/gareth/network.exe: Bourne-Again shell script, ASCII text executable
    
por 21.10.2014 / 17:36
0

Sim, qualquer extensão ou nenhuma funcionará, desde que seja um arquivo de texto e marcada como executável.

Se você usar #! mais o interpretador requerido como a primeira linha, isso substituirá o interpretador de script padrão.

    
por 21.10.2014 / 12:54