A primeira coisa a verificar depois de extrair um programa de um arquivo é as permissões ( chmod a+x ./sage
), mas se esse era o problema, a mensagem de erro seria "permissão negada" e não "comando não encontrado".
Dê sua descrição "abriu a pasta no terminal e execute o comando", é provável que você tenha executado o comando sage
esperando executar o programa com este nome no diretório atual. O Unix não funciona assim: o shell só procura por programas nos diretórios listados na PATH
variável de ambiente. Ele não pesquisa o diretório atual implicitamente primeiro. Para executar um programa no diretório atual, você precisa digitar seu caminho:
./sage
Se você quiser executar o programa sem especificar um caminho, será necessário instalá-lo em um diretório em $PATH
(geralmente /usr/local/bin
ou ~/bin
). Geralmente é conveniente deixar o executável com os outros arquivos do aplicativo e criar um link simbólico em um diretório em $PATH
:
ln -s /path/to/sage-5.9/sage ~/bin/
ou se você já estiver no diretório que contém o sage
binary:
ln -s $PWD/sage ~/bin/
Se você acabou de adicionar um programa a um diretório em seu PATH e seu shell ainda reclamar que o comando não foi encontrado, pode ser porque você tentou antes e seu shell manteve as informações "não encontradas" em um cache . Execute hash -r
para reconstruir o cache e tente novamente. Da próxima vez que você iniciar um shell, isso não será mais um problema, porque o cache não é salvo entre as execuções do shell.
Se você executar um arquivo que esteja presente, com um caminho especificado, e receber a mensagem de erro "comando não encontrado", talvez seja porque você não tem o carregador correto . Isso pode acontecer se você baixou um binário que é suportado pelo seu processador e kernel, mas você não tem o suporte requerido para a userland (nenhuma biblioteca). Isso também pode acontecer se o programa for um script cuja linha shebang se refere a um intérprete que não está presente seu sistema (embora os shells típicos forneçam uma mensagem de "intérprete incorreto" em vez de "comando não encontrado" neste caso).