Qual é a diferença entre o fornecimento e a execução de um script de shell

Qual é a diferença entre o fornecimento e a execução de um script de shell
Em sistemas operacionais do tipo UNIX, um script de shell é um arquivo que contém uma série de comandos que são interpretados e executados pelo programa Shell. Quando se trata de executar um script de shell, existem duas maneiras principais de fazê -lo: fornecimento e execução. Embora possam parecer semelhantes, eles têm efeitos diferentes nas variáveis ​​atuais da sessão e do ambiente, este artigo elaborará as diferenças entre os dois métodos.

Qual é a diferença entre o fornecimento e a execução de um script de shell

Para entender a diferença entre as duas maneiras pelas quais se deve primeiro ter um bom conhecimento para usar os dois métodos, então primeiro vamos ter sua definição básica um por um:

Adquirindo um script de shell

O fornecimento de um script de shell é uma maneira de executar um script no ambiente de shell atual. Todos os comandos de um script são executados se forem digitados diretamente na interface da linha de comando e o fornecimento de um script faz a mesma coisa. Por isso, oferece uma opção para o script para modificar as variáveis ​​de ambiente e definir opções de shell no shell atual.

Para uma ilustração adicional, fiz um arquivo de teste para o script bash e o executei, aqui está o código do arquivo Bash que eu criei:

# BashFile.sh
exportar my_info = "hello linuxhint"

Aqui eu criei uma variável ambiental que é my_info que tem Olá Linuxhint armazenado nele e depois executado usando a sintaxe dada:

.

Desde que eu criei um arquivo chamado Bashfile.SH Então eu usei a sintaxe acima assim:

. Bashfile.sh

Depois que o arquivo é executado, liguei para a variável ambiental para ver o que é armazenado e ele retorna o valor armazenado nele, o que mostra claramente que as mudanças nas variáveis ​​do ambiente persistem no shell atual:

Executando um script de shell

Executar um script de shell é uma maneira de executar um script em uma concha separada. Quando um script é executado, um novo shell é criado, o script é executado nessa concha e o shell termina quando o script é concluído. Isso mostra que quaisquer alterações feitas nas variáveis ​​do ambiente ou opções de shell no script não persistirão depois que o script terminar. Para uma ilustração adicional, fiz um arquivo de teste para o script bash e o executei, aqui está o código do arquivo Bash que eu criei:

# BashFile.sh
exportar my_info = "hello linuxhint"

Aqui acabei de criar uma variável ambiental que é my_info que tem Olá Linuxhint armazenado nele e depois executado usando a sintaxe dada:

./

Desde que eu criei um arquivo chamado Bashfile.SH Então eu usei a sintaxe acima assim:

./BashFile.sh

Depois que o arquivo é executado, chamei a variável de ambiente para ver o que é armazenado e retorna um espaço em branco que mostra claramente que as alterações feitas nas variáveis ​​do ambiente ou nas opções de shell no script não persistirão após o término do script:

Para ilustrar ainda mais a diferença, a tabela dada abaixo que identifica algumas das principais diferenças entre o fornecimento e a execução de um arquivo:

Fatores Executando um script de shell Adquirindo um script de shell
Aliases e funções Aliases e funções só persistem na concha do script. Aliases e funções persistem na concha atual.
Ambiente Alterações nas variáveis ​​de ambiente só persistem na concha do script. Alterações nas variáveis ​​de ambiente persistem no shell atual.
Sintaxe ./nome de script.nome de script sh ou bash.sh . nome de script.nome de script sh ou fonte.sh
Principal utilidade Execute um script independente sem afetar a concha atual. Configure as variáveis ​​ou aliases do ambiente para a concha

Conclusão

Existem duas maneiras de executar o script de bash, é adquirindo -o e o outro é executando -o, as duas maneiras têm seu próprio significado. A principal diferença entre os dois é que o fornecimento do arquivo de script mantém as alterações nas variáveis ​​do ambiente no shell atual, enquanto a execução do script manterá as alterações.a