Os arquivos que terminam em .exe são comuns em sistemas Windows. Em binários de sistemas Linux, geralmente não há extensão.
Ao executar gcc sem usar -o para especificar o nome do arquivo de saída, ele (por motivos históricos) geralmente criará um arquivo chamado a.out .
Ao tentar executar um comando sem especificar sua localização, o linux pesquisará os locais na variável de ambiente PATH para o comando fornecido.
Esta variável PATH normalmente irá intensionalmente não conter o diretório atual. Você poderia adicionar . (o diretório atual) à lista, mas isso levaria a efeitos inesperados, por exemplo, se você digitar ls , esperaria ver o conteúdo do diretório atual e não executar algum arquivo chamado "ls "o que pode acontecer de viver lá.
Portanto, se você quiser executar um comando a partir de um local não listado em PATH , precisará especificar explicitamente seu caminho. Para executar um arquivo chamado a.out no diretório atual ( . ), você precisa digitar ./a.out .