Existem duas formas de executar um script de shell no Linux. Você pode usar:
bash script.sh
ou você pode executar o script shell assim:
./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.
eu estou indo para usar esta uma linha shell script para fazer as coisas o mais simples possível:
:~/Scripts$ cat hello.sh echo "Hello World!"
Método 1: Executar um script do shell de passar o arquivo como argumento para shell
O primeiro método envolve a passagem 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:
bash hello.sh
você sabe a vantagem desta abordagem? Seu script não precisa ter a permissão de execução. Muito útil para tarefas rápidas e simples.
Se você não estiver familiarizado já, eu aconselho você a ler o meu guia detalhado sobre permissão de arquivo no Linux.
tenha em mente que ele precisa ser um script de shell que você passa como argumento. Um script shell é composto por comandos. Se você usar um arquivo de texto normal, ele reclamará de comandos incorretos.
nesta abordagem, é explicitamente especificado que você deseja usar o bash como intérprete para o script.
Shell é apenas um programa e bash é uma implementação disso. Existem outros programas de shells como ksh, zsh, etc. Se você tiver outros shells instalados, você pode usar isso também em vez de bash.
por exemplo, instalei o zsh e usei-o para executar o mesmo script:
Leitura Recomendada:
Método 2: Executar o shell script, especificando o seu caminho
outro método para executar um script de shell está fornecendo o 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 a permissão de execução. Você pode usar o comando chmod para se dar essa permissão assim:
chmod u+x script.sh
depois que seu script for executável, tudo o que você precisa fazer é digitar o nome do arquivo junto com seu caminho absoluto ou relativo. Na maioria das vezes você estiver no mesmo diretório, de forma que você só usá-lo como este:
./script.sh
Se você não estiver no mesmo diretório que o script, você pode especificar o caminho absoluto ou relativo para o script:
Que ./ antes que o script é importante (quando você estiver no mesmo diretório que o script)
Por que você não pode usar o nome de script quando você estiver no mesmo diretório? Isso ocorre porque seus sistemas Linux procuram os executáveis para serem executados em alguns diretórios selecionados que são especificados na variável PATH.
Aqui é o valor da variável PATH para o meu sistema:
:~$ 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 a partir de qualquer lugar no sistema:
- /início / abhishek/.local/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/jogos
- /usr/local/jogos
- /snap/bin
binários executáveis ou arquivos para Linux comandos como ls, cat, etc estão localizados em um desses diretórios. É por isso que você é capaz de executar esses comandos de qualquer lugar em seu sistema apenas usando seus nomes. Veja, o comando ls está localizado no diretório / usr / bin.
Quando você especificar o script SEM o caminho absoluto ou relativo, ele não pode encontrá-lo nas pastas mencionadas na variável PATH.
por que a maioria dos scripts de shell contém #! / bin / bash no início dos scripts 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 o bash como interpretador. Se você não fizer isso e executar um script ./roteiro.Sh maneira, geralmente é executado com qualquer shell que você está executando.
isso importa? Podia. Veja, a maior parte da sintaxe do shell é comum em todos os tipos de shell, mas alguns podem ser diferentes.
por exemplo, o comportamento da matriz é diferente nos shells bash e zsh. No zsh, o índice da matriz começa em 1 em vez de 0.
Usando #! / bin / bash indica que o script é bash shell script e deve ser executado com bash como interpretador, independentemente do shell que está sendo usado no sistema. Se você estiver usando sintaxe específica zsh, você pode indicar que é 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 adicionado ao seu conhecimento Linux. Se você ainda tiver dúvidas ou sugestões, Deixe um comentário.
usuários especialistas ainda podem nitpick este artigo sobre coisas que eu perdi. Mas o problema com esses tópicos 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 bash script, temos uma série Bash iniciante inteiro em nosso site focado sysadmin Linux Handbook. Se você quiser, você também pode comprar o ebook com exercícios adicionais para apoiar Linux Handbook.
como o que você leu? Por favor, compartilhe com os outros.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0