Absolutamente não é uma pergunta idiota! Confira isso (primeiro), depois isso e isso .
Emanuel Berg
Respostas:
7
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
$
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.
Não. Colar o conteúdo é equivalente a obter o script. Isso mudará todos os tipos de opções no shell atual, que não seriam alterados simplesmente executando o script.
Michas
você está certo. mas no que diz respeito a suas perguntas. Eu acho que podemos dizer que é bem parecido. mas sim, traduzir o que michas disse em termos noob'er. colar o conteúdo do script é equivalente a fazer 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.
Mathieu J.
1
Não. Mesmo 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. :)
michas 27/12/12
1
@michas: Bem, ainda é melhor dar a descrição correta. Se o iniciante é ambicioso e tem hábitos de trabalho, ele ou ela vai entender rapidamente. Se tentarmos contar a história da criança, ficaremos tropeçando e causar uma impressão incompreensível - além disso, o iniciante pode voltar mais tarde. Embora eu não me considere um iniciante, há muitas coisas que não sei e ficaria insultado se alguém retivesse alguma coisa respondendo minhas perguntas porque "você ainda não chegou, júnior".
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 lerman 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.
Sem a exportação
a
nem é visível o script interno.fonte
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 dobash
,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ávelSHELL
, tente digitarecho $SHELL
).pode haver diferenças na configuração do mesmo intérprete para a sessão interativa e para a execução do script.
fonte
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.
fonte
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 queexport
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. :)