Como executar um script de shell no Linux [Fundamentos Explicados para Iniciantes]

27 de janeiro de 2021

Existem duas maneiras de executar um script de shell no Linux. Você pode usar:

Comandos para usar no terminal

bash script.sh

Ou você pode executar o script de shell desta forma:

Comandos para usar no terminal

./script.sh

Isso pode ser simples, mas não explica muito. Não se preocupe, farei a explicação necessária com exemplos para que você entenda por que uma sintaxe específica é usada no formato fornecido durante a execução de um script de shell.

Vou usar este script de shell de uma linha para tornar as coisas o mais descomplicadas possível:

Comandos para usar no terminal

[email protected]:~/Scripts$ cat hello.sh

echo "Hello World!"

Método 1: executar um script de shell passando o arquivo como argumento para o shell

O primeiro método envolve passar o nome do arquivo de script como um argumento para o shell.

Considerando que o bash é o shell padrão, você pode executar um script como este:

Comandos para usar no terminal

bash hello.sh

Você conhece a vantagem dessa abordagem? Seu script não precisa ter permissão de execução. Muito prático para tarefas rápidas e simples.

Executar um Shell Script Linux

Executar um Shell Script Linux

Se você ainda não estiver familiarizado, aconselho-o a ler o guia detalhado sobre permissão de arquivo no Linux.

Lembre-se de que ele precisa ser um script de shell que você passa como argumento. Um script de shell é composto de comandos. Se você usar um arquivo de texto normal, ele reclamará de comandos incorretos.

Executando arquivo de texto como script no Linux

Executando um arquivo de texto como script

Nesta abordagem, você especificou explicitamente que deseja usar bash como o interpretador para o script.

Shell é apenas um programa e o bash é uma implementação disso. Existem outros programas de shells como ksh, zsh, etc. Se você tiver outros shells instalados, poderá usá-los também em vez do bash.

Por exemplo, instalei zsh e usei-o para executar o mesmo script:

Executar Shell Script com Zsh

Método 2: execute o script de shell especificando seu caminho

O outro método para executar um script de shell é fornecendo seu caminho. Mas para que isso seja possível, seu arquivo deve ser executável. Caso contrário, você terá o erro “permissão negada” ao tentar executar o script.

Portanto, primeiro você precisa ter certeza de que seu script tem permissão de execução. Você pode usar o comando chmod para conceder a si mesmo esta permissão, assim:

Comandos para usar no terminal

chmod u+x script.sh

Uma vez que seu script é executável, tudo que você precisa fazer é digitar o nome do arquivo junto com seu caminho absoluto ou relativo. Na maioria das vezes você está no mesmo diretório, então apenas o usa desta forma:

Comandos para usar no terminal

./script.sh

Se você não estiver no mesmo diretório que seu script, poderá especificá-lo como o caminho absoluto ou relativo para o script:

Executando Shell Script em outro diretório

Executando Shell Script em outro diretório

Esse ./ antes do script é importante (quando você está no mesmo diretório que o script)

Executando Shell Scripts Linux

Por que você não pode usar o nome do script quando está no mesmo diretório? Isso ocorre porque seus sistemas Linux procuram os executáveis para rodar em alguns diretórios selecionados que são especificados na variável PATH.

Aqui está o valor da variável PATH para meu sistema:

abhishek@itsfoss:~$ echo $PATH
/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Isto significa que qualquer arquivo com permissões de execução em um dos seguintes diretórios pode ser executado de qualquer lugar no sistema:

  • /home/abhishek/.local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /bin
  • /usr/games
  • /usr/local/games
  • /snap/bin

Os binários ou arquivos executáveis para comandos Linux como ls, cat etc estão localizados em um desses diretórios. É por isso que você pode executar esses comandos de qualquer lugar em seu sistema apenas usando seus nomes. Veja, o comando ls está localizado no diretório/usr/bin.

Locating Command Linux

Quando você especifica o script SEM o caminho absoluto ou relativo, ele não pode encontrá-lo nos diretórios mencionados na variável PATH.

Por que a maioria dos scripts de shell contém #!/bin/bash no início dos scripts de shell?

Lembre-se de como mencionei que o shell é apenas um programa e existem diferentes implementações de shells.

Quando você usa o #!/bin/bash, você está especificando que o script deve ser executado com bash como interpretador. Se você não fizer isso e executar um script no modo ./script.sh, ele geralmente será executado com qualquer shell que você estiver executando.

Isso importa? Poderia. Veja, a maior parte da sintaxe do shell é comum em todos os tipos de shell, mas alguns podem ser diferentes.

Por exemplo, o comportamento do array é diferente nos shells bash e zsh. Em zsh, o índice da matriz começa em 1 em vez de 0.

Bash Vs Zsh

Bash Vs Zsh

Usando #!/bin/bash indica que o script é um script de shell bash e deve ser executado com o bash como interpretador, independentemente do shell que está sendo usado no sistema. Se estiver usando a sintaxe específica do zsh, você pode indicar que é um script zsh adicionando #!/bin/zsh como a primeira linha do script.

O espaço entre #!/bin/bash não importa. Você também pode usar #!/bin/bash.

Foi útil?

Espero que este artigo tenha adicionado ao seu conhecimento do Linux. Se você ainda tiver dúvidas ou sugestões, deixe um comentário.

Usuários experientes ainda podem criticar este artigo sobre coisas que eu perdi. Mas o problema com esses tópicos para iniciantes é que não é fácil encontrar o equilíbrio certo de informações e evitar ter muitos ou poucos detalhes.

Se você estiver interessado em aprender o script bash, temos uma série inteira do Bash para iniciantes em nosso site focado em administradores de sistemas, o Linux Handbook. Se desejar, você também pode adquirir o e-book com exercícios adicionais para dar suporte ao Linux Handbook.

Confira também a versão original desse post em inglês
Esse post foi originalmente escrito por Abhishek Prakash e publicado no site itsfoss.com. Traduzido pela rtland.team

How to Run a Shell Script in Linux [Essentials Explained for Beginners]

Propaganda
Propaganda