por que ./ é necessário para executar um arquivo executável?

9

Estou usando o Ubuntu e noto que muitos dos meus scripts executáveis não são executados a menos que eu preceda o tema por ./ .

Por exemplo, se eu tiver um script em perl: /home/me/script.pl e atualmente estou em /home/me , digitar script.pl não fará isso, mas ./script.pl será.

Por que isso?

    
por David B 04.08.2010 / 15:34

4 respostas

13

Para executar um script, você precisa digitar o caminho completo para o script a menos que o script esteja presente em um dos diretórios listados na variável de ambiente $PATH . Geralmente (e por padrão) . (o diretório atual) não é no seu $PATH , então você precisa digitar ./script para executá-lo.

    
por 04.08.2010 / 15:36
21

Porque o diretório atual não está no seu caminho. Este é um recurso de segurança. Se estivesse em seu caminho, alguém poderia potencialmente remover uma cópia maliciosa de um comando comum e, quando você estiver nesse diretório em vez de executar o sudo real, por exemplo, você executaria o falso. Isso seria uma coisa ruim.

    
por 04.08.2010 / 15:36
4
echo $PATH

Você deve ter o diretório atual (um único ponto) em seu caminho para que isso funcione.

Você pode adicioná-lo ao seu caminho se quiser com os seguintes comandos.

sh / bash: export PATH=$PATH:.

tcsh / csh: set PATH = ($PATH .)

    
por 04.08.2010 / 15:36
3

o shell pesquisa o caminho dos executáveis e, por padrão, ./ não está no caminho.

    
por 04.08.2010 / 15:36