Quando eu compilo o egxc:
GCC x.c -o x
Para executar o resultado eu tenho que escrever:
./x
E apenas digitando:
x
Falha com esta mensagem:
x: comando não encontrado
Isso significa que o Linux não procura no diretório atual por ele! Existe (tenho certeza que existe) algum problema razoável por trás desse comportamento?
Respostas:
Porque, por padrão, o diretório de trabalho atual não está na
PATH
variávelEsta é uma medida de segurança / conveniência. Se você possui binários / scripts chamados
cd
, por exemplo ,ls
etc. no seu diretório de trabalho atual, seria muito irritante se eles fossem executados por padrão.fonte
cd
embash
, ele executa uma interna rotina para bash e não/bin/cd
), a menos que precedido de `.`sl
, você tem o mesmo problema. Somente diretórios confiáveis devem estar em$PATH
caminhos relativos, como nunca.
são um diretório confiável para um shell interativo.rm -r target
quando quis dizerrm -f target
, geralmente não há diferença. Se eu digitarrm -f target
quando quisesserm -r target
, não haverá diferença ou a remoção definitiva falhará. Além disso, acho que todas as vezes antes de digitarrm
, especialmente se estou adicionando-f
ou-r
ou um globo - é um comando perigoso por natureza. Ninguém pensa antes dels
ing.Isso significa que o diretório atual não está na variável $ PATH.
fonte
Você pode corrigir isso adicionando o diretório atual (representado por um único ponto) à
PATH
variável de ambiente.A maneira de fazer isso depende do shell que você está usando.
se você estiver usando o bash, poderá adicionar a linha
export PATH=$PATH:.
ao.bashrc
arquivo no diretório inicial.se você estiver usando csh ou tcsh, adicione a linha
set PATH = ($PATH .)
ao arquivo .cshrc no diretório inicial.IMHO, para um computador doméstico, isso é algo aceitável - segurança.
fonte