Diferença entre comandos no script bash e comandos no terminal

12

Existe alguma diferença entre os comandos digitados no terminal e os comandos incluídos em um script?

    
por jth41 26.12.2012 / 21:23

3 respostas

8

Seu terminal executa um shell (provavelmente bash ), que é o que solicita seus comandos e os executa.

Além deste modo interativo, você também pode usar seu shell para executar comandos de um arquivo. Para executar os comandos em seu arquivo, você pode chamar o shell diretamente como bash script ou pode iniciar seu arquivo com um "shebang" #!/bin/bash e torná-lo executável ( chmod +x script ). Então você pode tratar o script como um binário e executá-lo, por exemplo, como ./script ou colocá-lo em um local onde você está procurando por shell. ( echo $PATH )

Provavelmente, tanto o shell interativo quanto o shell usado para executar é bash . Do ponto de vista de um "primeiro dia de aprendizado do linux", o bash funciona exatamente da mesma maneira em ambos os modos. - Muito mais tarde você pode se deparar com pequenas diferenças. Se você realmente quiser saber em detalhes, sugiro ler man bash e procurar por lugares que mencionem "interativo". (Você pode pesquisar uma página man, pressionando / .)

Uma coisa importante a notar é que o script é executado como um novo processo. Isso significa especialmente que as variáveis configuradas no script não estão visíveis no shell de chamada.

$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$ 

Sem a exportação, a não é visível para o script interno.

    
por 26.12.2012 / 23:06
2

Em geral, a resposta seria "não", os comandos no shell são os mesmos nos scripts, na sintaxe e na semântica.

Mas há um monte de pequenas nuances relacionadas à configuração do ambiente (quais variáveis são usadas e o que elas são definidas).

  • o shell interativo de escolha do Linux é bash, mas o script geralmente usa outros intérpretes ( sh , que é um predecessor de bash , ksh , que está no mesmo nível do bash), então você tem que levar em conta que shell é usado (o shell atual O nome s é tradicionalmente mantido na variável SHELL , tente digitar echo $SHELL ).

  • pode haver diferenças na configuração do mesmo interpretador para sessões interativas e para execução de scripts.

por 27.12.2012 / 00:05
0

não. um script é uma lista de comandos que você pode digitar no terminal.

você pode colar a totalidade de um script no terminal e o resultado será o mesmo que executá-lo.

Inversamente, você pode "salvar" seus comandos do terminal dentro de um arquivo e transformá-lo em um script reutilizável e compartilhá-lo com sua família e amigos.

    
por 27.12.2012 / 00:37