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
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix