./ não é um comando. O comando é ./truecrypt-7.2-setup-x86 .
Seu shell e programas como sudo tratarão um comando como um nome do caminho quando ele contiver pelo menos um caractere / . Como . representa o diretório em que você está atualmente, ./truecrypt-7.2-setup-x86 nomeia o arquivo truecrypt-7.2-setup-x86 no diretório atual. Se não houver tal arquivo, ou houver, mas o arquivo não puder ser executado, você receberá uma mensagem de erro.
Quando um comando não contém uma barra, os diretórios listados em $PATH são pesquisados. , como Sergiy Kolodyazhnyy diz . O diretório atual não é pesquisado automaticamente - e é não recomendado colocar . em $PATH . Dessa forma, você não executa acidentalmente as coisas que não esperava executar porque passou a ter cd d em um diretório que as contenha.
Escrevendo ./ antes do nome de um executável no diretório atual o caminho comum para executá-lo, mas isso não é realmente uma sintaxe especial. Por exemplo, se você estragou o $PATH e precisou executar um comando como ls , pode escrever /bin/ls . Nenhum . é necessário nesse caso ou em geral; o que é necessário é um / em algum lugar no caminho para significar que você quer dizer que é um nome de caminho.
Como . é sempre o diretório atual e / é apenas o separador de diretório, a primeira coisa a fazer é verificar se o arquivo que você nomeou realmente existe no diretório atual. (Em caso afirmativo, verifique suas permissões , como Charles Green explica . Mas se você extraiu o arquivo de um arquivo, então normalmente já terá permissões executáveis se for destinado a ser executado.)