Respostas:
Seu terminal executa um shell (provavelmente bash
), 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 no 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
). Em seguida, você pode tratar o script como um binário e executá-lo, por exemplo, ./script
ou colocá-lo em um local em que o shell o esteja procurando. ( echo $PATH
)
Provavelmente o seu shell interativo e o shell usado para executar é bash
. Da perspectiva de um "primeiro dia de aprendizado do Linux", o bash funciona exatamente da mesma maneira nos dois modos. - Muito depois, você pode tropeçar em pequenas diferenças. Se você realmente quiser saber mais detalhadamente, sugiro ler man bash
e pesquisar lugares que mencionem "interativo". (Você pode pesquisar uma página de manual pressionando /
.)
Uma coisa importante a ser observada é que o script é executado como um novo processo. Isso significa especialmente que as variáveis definidas no script não sã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
nem é visível o script interno.
Em geral, a resposta seria "não", os comandos no shell são os mesmos nos scripts, na sintaxe e na semântica.
Mas existem várias pequenas nuances relacionadas à configuração do ambiente (quais variáveis são usadas e o que são definidas).
o shell interativo de escolha para Linux é bash, mas scripting muitas vezes usa outros intérpretes ( sh
, que é um antecessor do bash
, ksh
que está a par com bash), então você tem que levar em conta o shell é usado (o nome atual shell s tradicionalmente é mantido em variável SHELL
, tente digitar echo $SHELL
).
pode haver diferenças na configuração do mesmo intérprete para a sessão interativa e para a execução do script.
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" os comandos do terminal dentro de um arquivo, transformá-lo em um script reutilizável e compartilhá-lo com sua família e amigos.
source script_file
. que editará os vars ENV no contexto atual. enquanto estiver executando o script ./script_file
, não modificará o ENV, a menos que export
seja usado explicitamente.
export
assim, não é possível que um script modifique quaisquer variáveis do shell de chamada. O mesmo vale para coisas como PWD, aliases definidos, funções e coisas assim. Eles podem ser alterados apenas de forma interativa ou através da busca de um arquivo. Mas sim, isso provavelmente não é nada que alguém tropeçará no primeiro dia. :)