Quando você digita o nome de um programa, como a.out
, o sistema procura o arquivo em seu PATH. No meu sistema, o PATH está definido para
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
O seu é provavelmente semelhante. Para verificar, digite echo $PATH
em um terminal.
O sistema examina esses diretórios na ordem indicada e, se não conseguir encontrar o programa, produzirá um erro command not found
.
Preencher o comando com ./
efetivamente diz "esqueça o PATH, quero que você olhe apenas no diretório atual".
Da mesma forma, você pode dizer ao sistema para procurar em apenas outro local específico, prefixando o comando com um caminho relativo ou absoluto, como:
../
significa no diretório pai, por exemplo, ../hello
procura por hello no diretório pai.
./Debug/hello
: "procure hello
no subdiretório de depuração do diretório atual."
ou /bin/ls
: "procure por ls
no diretório /bin
"
Por padrão, o diretório atual não está no caminho porque é considerado um risco de segurança. Veja porque é. não está no caminho por padrão? no Superusuário por quê.
É possível adicionar o diretório atual ao seu PATH, mas pelas razões dadas na pergunta vinculada, eu não o recomendaria.