Como saber quando usar ./ ou não? [duplicado]

2
    

Esta pergunta já tem uma resposta aqui:

    
  •              Por que preciso digitar './' antes de executar um programa no diretório atual?                                      10 respostas                          
  •     

Estou vendo alguns tutoriais sobre como navegar no sistema de arquivos, mas não importa qual tutorial eu veja, há uma coisa que ninguém parece responder.

Eu entendo que . é o diretório atual. Eu entendo que / é o diretório raiz ou pode significar apenas o fim de um diretório atual.

Então, como é que se eu quiser executar um programa no diretório atual eu tenho que fazer ./ProgramName ? Isso é só porque ProgramName poderia estar em $PATH e eu tenho que especificar que eu quero executar a versão no diretório atual? Por que o Ubuntu não executa automaticamente a versão do diretório atual se não houver equivalente em $PATH ?

E se sim, por que posso omitir ./ quando estou percorrendo diretórios? Por exemplo, posso apenas fazer cd DropBox do meu diretório pessoal. Eu também posso fazer cd ./DropBox e parece funcionar, mas porque não é o ./ necessário?

    
por Aruka J 21.09.2017 / 15:09

2 respostas

6

Deixe-me tentar explicar, para responder à situação cd . Agora temos . - current directory , então / - root directory, agora lembre-se que / é usado no Linux para indicar absolute path e não caminho relativo, quando inicia o endereço do caminho . Agora no seu caso,

  1. Quando você usa cd folder_name , está usando o endereço relative path para o diretório (atual), portanto, não é necessário especificar o caminho, já está lá.

  2. Quando você usa cd ./folder_name , ele me move para a pasta com o nome folder_name no diretório atual ( . ).

  3. Você executa um programa no diretório atual . , com ./program.sh diz - don't bother searching in the standard paths na pasta . atual. Esta é a configuração padrão do Linux.

  4. Além disso (graças a Sergiy), outra coisa que gostaria de acrescentar é que ao usar globstar para lidar com arquivos, deve-se usar ./ porque é mais seguro. Digamos que você execute algo como ls * e tenha um nome de arquivo como -231.txt . O comando ls pensará que -2 é uma opção de comando, mas há um switch assim em ls, então você receberá um erro. Com ls ./* , funcionará sem problemas. Portanto, ./ é usado não apenas para cd em algum lugar ou executando o script

por George Udosen 21.09.2017 / 15:30
0

Quando você usa cd, isso significa especificamente que você deseja alterar o diretório, portanto, o sistema operacional examinará os filhos do diretório atual. Ao executar um programa, './' limpa que é um programa e não um comando.

    
por stupidly_logical 21.09.2017 / 15:14