Por que eu tenho que digitar “./” sempre antes de um executável para executá-lo no Linux?

7

Quando eu compilo, por exemplo x.c por:

GCC x.c -o x

Para executar o resultado, tenho que escrever:

./x

E apenas digitando:

x

Falha com esta mensagem:

x: command not found

Isso significa que o Linux não pesquisa o diretório atual para isso! Existe (eu tenho certeza que existe) qualquer questão razoável por trás deste comportamento?

    
por Yasser Zamani 28.04.2012 / 15:41

3 respostas

12

Como por padrão, o diretório de trabalho atual não está na variável PATH .

Esta é uma medida de segurança / conveniência. Se você tiver binários / scripts chamados, por exemplo cd , ls , etc. em seu diretório de trabalho atual, seria muito irritante se eles fossem executados por padrão.

    
por 28.04.2012 / 15:42
1

Isso significa que o diretório atual não está na variável $ PATH.

    
por 28.04.2012 / 15:42
1

Você pode corrigir isso adicionando o diretório atual (representado por um único ponto) à variável de ambiente PATH .
A maneira de fazer isso depende do shell que você está usando.
Se você estiver usando bash, você pode adicionar a linha export PATH=$PATH:. ao arquivo .bashrc em seu diretório home. se você estiver usando csh ou tcsh adicione a linha set PATH = ($PATH .) para o arquivo .cshrc no seu diretório pessoal.
IMHO, para um computador de mesa doméstico, isso é uma coisa aceitável de se fazer - em termos de segurança.

    
por 28.04.2012 / 23:35

Tags