Variáveis de ambiente e o PATH
'Command not found' quase sempre é um problema de PATH, não um problema do programa que você instalou.
Toda sessão de terminal carrega um conjunto de variáveis de ambiente — valores que ficam disponíveis pra qualquer comando ou programa que você rodar dali. Uma dessas variáveis, o PATH, é responsável por uma das mensagens de erro mais comuns do terminal: command not found. Entender o porquê resolve boa parte da confusão de quem está começando.
Criando e lendo uma variável
Pra criar uma variável de ambiente na sessão atual do shell, usa-se export:
export NOME_DO_USUARIO="joana"Pra ler o valor de qualquer variável, coloca-se $ antes do nome — sem o $, o shell trataria NOME_DO_USUARIO como texto comum, não como referência a uma variável.
echo $NOME_DO_USUARIOUma variável criada com export num terminal só existe nessa sessão — feche o terminal e ela desaparece. Pra ela existir toda vez que você abre um terminal novo, o export precisa estar escrito dentro de um arquivo de configuração do shell (como ~/.zshrc), assunto que a lição 15 cobre em detalhe.
O que é o PATH
Quando você digita um comando como node ou git, o shell precisa descobrir onde no disco está o programa que corresponde a esse nome — ele não procura a máquina inteira, procura só numa lista específica de pastas. Essa lista é a variável PATH.
echo $PATHCada pasta nessa lista é separada por :. Quando você roda git, o shell procura, em ordem, um arquivo executável chamado git dentro de cada uma dessas pastas — assim que encontra o primeiro, executa e para de procurar.
Por que 'command not found' acontece
Se você instala um programa novo e o executável dele fica salvo numa pasta que não está listada no PATH, o shell simplesmente não sabe que ele existe — mesmo que o arquivo esteja lá, íntegro, funcionando.
meu_programaIsso não significa que o programa não foi instalado — muitas vezes significa só que ele foi instalado numa pasta que o PATH desconhece. A correção é adicionar essa pasta ao PATH:
export PATH="$PATH:/caminho/onde/meu_programa/esta"Repare no truque: $PATH do lado direito pega o valor atual da variável, e o comando inteiro recria PATH como "tudo que já tinha, mais essa pasta nova no final". Se você esquecer o $PATH ali e escrever só export PATH="/caminho/onde/meu_programa/esta", você substitui o PATH inteiro por essa única pasta — e de repente comandos básicos como ls também param de funcionar, porque as pastas onde eles moram saíram da lista.
Exercício
Você acabou de instalar uma ferramenta de linha de comando chamada minhaferramenta, que ficou salva em /opt/minhaferramenta/bin. Ao digitar minhaferramenta, aparece command not found. Explique a causa provável e o comando que resolve.