Qual é a utilidade de usar dot before / home?

2

Para executar um script, digitamos ./script.ksh, mas para nos conectarmos a um banco de dados, primeiro, vamos pelo caminho abaixo, digitando . /

$ . /home/sqllib/db2profile 
$  db2

por que devemos usar . / antes de casa?

    
por star 28.02.2016 / 17:49

2 respostas

8

O . que você encontra como parte de nomes de caminho não tem nada a ver com o comando . .

. é um nome de arquivo especial que existe em cada diretório e designa o diretório atual. Portanto, ./script.ksh designa o arquivo script.ksh no diretório atual e o ././script.ksh , assim como ./././script.ksh (não importa quantas vezes você pede ao resolvedor do caminho para ir do diretório atual para ele mesmo para si mesmo para si mesmo...). Entre outras razões, usamos ./script.ksh em vez de simplesmente script.ksh para deixar claro que queremos dizer um nome de caminho, não um comando shell.

. também é um shell interno que faz com que o shell forneça o conteúdo do arquivo fornecido como um argumento no ambiente atual do shell, em vez de executá-lo como um comando externo. O comando . também pode ser escrito source em muitos shells (esse é um alias de compatibilidade proveniente de csh heritage). Observe que, como este é um comando shell (que consiste em um único caractere de pontuação, como : ), ele sempre é seguido por espaço em branco.

    
por 28.02.2016 / 17:54
0

Neste caso, o . diz ao shell para executar o seguinte script (neste caso, /home/sqllib/db2profile ) no contexto do processo shell atual, em vez de iniciar um novo processo shell para executar o script.

A razão para isso é que o script cujo nome segue o . provavelmente cria variáveis de ambiente que serão necessárias para outros programas. Sem o . na frente do nome do script de shell, um novo processo seria iniciado para executar o script e, portanto, qualquer variável de ambiente criada pelo script seria perdida quando o script fosse concluído e seu processo terminado. Colocando o . antes do script, o script é executado pelo processo de shell atual para que quaisquer variáveis de ambiente criadas pelo script sejam criadas no contexto do shell atual e, portanto, essas variáveis de ambiente estejam disponíveis para scripts e programas que são executados posteriormente, como o comando db2 na próxima linha.

    
por 22.11.2016 / 14:33

Tags