./example.sh
executará example.sh
no diretório atual.
. example.sh
fonte example.sh
.
No shell do Linux, vi o comando começar com "./"
$ ./example
Mas também vi o comando similar como $. example.sh
A minha pergunta é que eles têm a mesma função?
./example.sh
executará example.sh
no diretório atual.
. example.sh
fonte example.sh
.
Embora pareçam semelhantes, os dois comandos não estão relacionados.
./example
executará um script de shell binário ou executável na pasta atual. Se for um script de shell, ele será executado em um sub shell.
. example
é idêntico a
source example
que irá "fonte" do arquivo, ou seja, executá-lo no contexto do shell atual . Isso significa que, se houver declarações de variáveis ou funções nesse arquivo, elas estarão disponíveis no shell atual após o comando source
. Também manipulações variáveis ou o que acontecerá no shell atual. É como se você tivesse digitado o conteúdo do arquivo linha por linha manualmente no terminal.
Tags command-line linux