O ponto ( .
) é uma notação para executar comandos de um arquivo, que foi dado como um argumento para o ponto. O conteúdo deste arquivo, digamos ./configure.sh
, é executado no shell atual. O comando dot originou-se com o shell Bourne e está disponível em outros, por exemplo, no Bash.
trecho da página man do Bash
. filename [arguments]
source filename [arguments]
Read and execute commands from filename in the current shell
environment and return the exit status of the last command executed from
filename. If filename does not contain a slash, file names in PATH are used
to find the directory containing filename. The file searched for in PATH
need not be executable. When bash is not in posix mode, the current directory
is searched if no file is found in PATH. If the sourcepath option to the
shopt builtin command is turned off, the PATH is not searched. If any
arguments are supplied, they become the posi‐ tional parameters when filename
is executed. Otherwise the positional parameters are unchanged. The return
status is the status of the last command exited within the script (0 if no
commands are executed), and false if filename is not found or cannot be read.
OBSERVAÇÃO: Outros shells, como csh
, possuem um comando similar source
e muitas das variantes mais modernas suportam tanto a notação de ponto quanto o comando source
. O Bash na verdade suporta ambos.
Exemplo
Veja um exemplo em que definiremos a variável $SOMEVAR
em nosso shell atual, fornecendo um arquivo com essa variável definida.
Aqui está o arquivo de amostra:
$ cat test.sh
SOMEVAR="hi"
Primeiro, verificamos se a variável $SOMEVAR
ainda não está definida no shell atual.
$ echo $SOMEVAR
$
Agora, fornecemos e confirmamos que agora está definido:
$ . ./test.sh
$ echo $SOMEVAR
hi
Portabilidade
Obrigado ao @ChrisDown por mencionar isso. O ponto ( .
) é especificado como parte do POSIX e, portanto, é portável, enquanto o comando source
não é. Veja aqui na documentação sobre Especificações do Grupo Aberto sobre a Edição 7 , seção: "2. Linguagem de Comando Shell ". Especificamente esta seção.
trecho
NAME
dot - execute commands in the current environment
SYNOPSIS
. file
DESCRIPTION
The shell shall execute commands from the file in the current environment.
If file does not contain a , the shell shall use the search path specified by PATH to find the directory containing file. Unlike normal command search, however, the file searched for by the dot utility need not be executable. If no readable file is found, a non-interactive shell shall abort; an interactive shell shall write a diagnostic message to standard error, but this condition shall not be considered a syntax error.