Quero saber se posso usar extensões diferentes para executáveis do linux em vez de usar as extensões ".sh" ou ".o".
Quero saber se posso usar extensões diferentes para executáveis do linux em vez de usar as extensões ".sh" ou ".o".
Respostas:
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-executado. Para blocos de texto executáveis, o que importa é a linha shebang na parte superior:
#!/bin/bash
Isso diz ao shell para interpretar o arquivo com o Bash, por exemplo.
Obviamente, as extensões ainda são relevantes para sessões gráficas.
which bash. toad: / home / hennes> ls -l ./bash -rwx ------ 1 hennes users 745832 Oct 21 14:07 ./bash toad: / home / hennes> mv bash bash.some_extension sapo: / home / Hennes> ./ bash.some </ pre> Happily inicia o binário festa apesar de mudar o nome
Ao contrário do Windows, o Linux (e outros sistemas operacionais semelhantes ao Unix) usa o Magic Numbers para diferenciar os diferentes tipos de arquivos e, consequentemente, não se importa com a extensão do arquivo.
O número mágico (às vezes a assinatura do arquivo ) é um padrão comparado a um banco de dados para determinar o tipo de arquivo.
Você pode usar o filecomando 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á descoberto:
$ 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
Sim, qualquer extensão ou nenhuma funcionará, desde que seja um arquivo de texto e marcado como executável.
Se você usar #!mais o intérprete necessário como primeira linha, isso substituirá o intérprete de script padrão.
.o).