Qual é o significado de ./ antes de um determinado caminho?

22

Foi-me dito para executar isto:

./yiic message ./app/messages/config.php

Mas eu não entendo o ./ significado, alguém pode esclarecer por favor.

Nota: Acredite em mim, não podemos google isso. Eu tentei:

./ significado ./ubuntu

Era o mesmo que nada. : (

    
por MEM 06.09.2011 / 18:56

4 respostas

27

./ ou apenas . é uma abreviatura unix para o diretório atual.

Você precisa especificá-lo quando o diretório atual não estiver em seu PATH. O PATH é a lista de pastas pesquisadas quando você executa um programa. (Você pode determiná-lo escrevendo echo $PATH .) Se um arquivo executável não estiver em seu PATH, para executá-lo você precisa especificar a pasta. Você pode fazer isso fornecendo o caminho completo para o arquivo, mas se arquivo está no diretório atual, você pode usar ./ como abreviação.

Da mesma forma, ../ ou apenas .. é uma abreviação para o diretório acima do atual.

    
por frabjous 06.09.2011 / 19:00
13

Todo diretório na linha de comando tem dois "diretórios especiais" chamados . e .. . Estes são abreviados para, respectivamente, o diretório atual e o diretório que contém o diretório atual.

Portanto, por exemplo, cd ./more/directory/names significa apenas "inicie no diretório atual e continue no caminho". Da mesma forma, o comando cd .. significa "alterar um diretório para cima.

Se você quiser o nome do seu diretório atual, você pode usar o comando pwd . Além disso, se você usar o sinalizador -a para ls , poderá ver esses dois diretórios especiais. Ou seja, ls -a produzirá uma lista começando com . e .. .

    
por Kris Harper 06.09.2011 / 19:02
3

Isso significa começar do current directory path .

Vamos supor que você tenha um path assim:

/usr/ /usr/bin/ /usr/local/bin

e dentro de /usr/bin/ existe um executável chamado yiic .

Se você emitir yiic , iniciará o em /usr/bin/ .

Ao emitir ./yiic , você diz ao sistema para olhar dentro do diretório atual para este executável.

    
por Rinzwind 06.09.2011 / 19:01
3

Outros já explicaram o que . e .. significa (diretório atual e diretório pai respectivamente). Isso se aplica a todos os nomes de caminho.

Quando você abre um terminal, geralmente inicia em seu diretório pessoal: ~ (que se expande para /home/username ). Os caminhos abaixo são todos equivalentes, desde que seu diretório de trabalho atual seja /home/username :

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username (o diretório pai de / ainda é / )
  • ./././././. (o diretório atual no diretório atual no ...)
  • ./ (barras finais são permitidas para diretórios)
  • /home////username/// (e, portanto, várias barras)

Não confunda ./program com . program . ./program executa um arquivo no diretório atual com o conjunto de bits de execução. . ./program é uma coisa bash e pode, alternativamente, ser escrito como source ./program , que lê comandos bash do arquivo program no diretório atual e os executa no shell atual.

Se você quer saber por que é possível executar apenas gedit em vez de /usr/bin/gedit e não program em vez de ./program ou /home/username/program , consulte a pergunta relacionada:

por Lekensteyn 06.09.2011 / 19:31

Tags