./
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.)