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 scriptou pode iniciar seu arquivo com um "shebang" #!/bin/bashe torná-lo executável ( chmod +x script). Em seguida, você pode tratar o script como um binário e executá-lo, por exemplo, ./scriptou 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 bashe 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 anem é 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, kshque 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 exportseja usado explicitamente.
exportassim, 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. :)