fbpx Certificação Linux: Interpretador de comandos no Linux #! Shebang [Guia Básico]

Blog

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

📅 07/12/2021 ⏱ 3 min ✍️ Uira Ribeiro
Linuxcomandos
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/bashclearecho “Olá $USER”echo “Hoje é “;dateecho “Número de usuários conectados: ” ; who | wc -lecho “Calendário”calexit 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/bashecho "eu sou:"id

Se executado normalmente:

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

Mas se executado com o sudo:

$ sudo ./meuscripteu 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

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Especialista Linux com mais de 20 anos de experiência.
Autor de 5 livros e mentor de mais de 14.000 alunos certificados.
20 certificações de alto nível, incluindo LPIC-3, CKA, RHCE e AWS Solutions Architect.

WhatsApp