Interpretador de comandos no Linux #! Shebang [Guia Básico]

Todo script que será executado no Linux deve indicar o Interpretador de comandos, deve na sua primeira linha iniciar com os caracteres “#!” seguido do caminho completo do interpretador de comandos. Esses caracteres são conhecidos como “shebang”.

Exemplo de um script de shell chamado bomdia:

#!/bin/bash
clear
echo “Olá $USER”
echo “Hoje é “;date
echo “Número de usuários conectados: ” ; who | wc -l
echo “Calendário”
cal
exit 0

Como estudado anteriormente, para um arquivo ser considerado executável é preciso que a sua permissão seja alterada e o bit executável habilitado:

$ chmod +x bomdia

Desta maneira o pequeno script poderá ser executado no prompt:

Olá uiraribeiro
Hoje é  
sex set 27 10:56:54 -03 2019
Número de usuários conectados: 
2
Calendário
    setembro 2019   
do se te qu qu se sá
 1  2  3  4  5  6  7 
 8  9 10 11 12 13 14 
15 16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30                

Outros interpretadores podem ser invocados pela linha “#!”, tais como o /bin/sh, /usr/bin/perl, /usr/bin/awk, dentre outros.

Quando um script é executado, o shell analisa o conteúdo da linha “#!” e carrega o programa definido para interpretar o script.

Em um script de shell esta linha faz com que um novo programa do shell seja executado para interpretar o script. Enquanto isso o shell que o executou fica em estado de espera.

O novo processo iniciado executa novamente os arquivos /etc/bashrc e ~/.bashrc.

Um aspecto importante é que o shell pai (em que o script foi chamado) pode passar variáveis para o processo shell filho que irá executar de fato o script. Mas o shell filho não poderá passar variáveis ou alterar o conteúdo delas para o processo pai. A herança é um caminho de mão única de processo pai para processo filho.

É importante que a chamada na linha “#!” que define qual interpretador deve ser executado esteja correta. Se o caminho estiver incorreto, o script poderá não ser executado.Já os comentários nos scripts de Bash são sinalizados com apenas uma tralha “#”. Todo o restante da linha será ignorado pelo shell.

Permissões de Execução de script no Linux

Para que um script possa ser executado, ele precisa ter permissão de execução e o comando chmod pode ser utilizado para habilitar esse bit para um script.

$ chmod +x script

Um script sempre será executado com as permissões do usuário que o executou, e de forma alguma o Kernel obedecerá ao bit SUID ou SGID para script.

No entanto, o script poderá ser executado com as permissões de outro usuário se utilizado o comando “sudo“.

Veja o exemplo este script que imprime o UID do usuário:

#!/bin/bash
echo "eu sou:"
id

Se executado normalmente:

$ ./meuscript
eu sou:
uid=1000(uira) gid=1000(uira) grupos=1000(uira),4(adm),10(wheel),190(systemd-journal)

Mas se executado com o sudo:

$ sudo ./meuscript
eu sou:
uid=0(root) gid=0(root) grupos=0(root)

Logo, deve-se tomar extremo cuidado ao se executar um script com o “sudo“, uma vez que todos os comandos que o script invoca serão executados com as permissões de outro usuário, e, possivelmente o root.

Utilizou-se no exemplo o caminho relativo “./” para chamar o script, porque o diretório corrente não está listado na variável PATH.

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe