Exemplo 1:
Quando instalo um pacote usando um gerenciador de pacotes como o gerenciador de pacotes JavaScript npm
, o pacote fica imediatamente disponível para ser executado em qualquer diretório em qualquer terminal:
$ npm install -g redis-cli
Eu nem preciso reiniciar meu laptop, este comando agora está disponível para mim:
$ rdcli
Exemplo 2:
Quanto a outro exemplo, vamos instalar um módulo Python usando o gerenciador de pacotes Python pip
:
$ pip install rq
Agora este comando está disponível em qualquer lugar sem reiniciar o sistema operacional:
$ rq
Em contraste:
Por outro lado, quando adiciono uma pasta ao caminho das minhas variáveis de ambiente, tenho que reiniciar o sistema:
C:\Program Files\smartmontools\bin
Agora, depois de reiniciar ou fazer este truque , este comando está disponível para mim:
$ smartctl.exe
Alguém pode explicar o que os gerenciadores de pacotes fazem em segundo plano?
Extra:
Uma coisa que notei é que quando você instala um pacote com um gerenciador de pacotes e ainda não reiniciou o sistema, ele está disponível apenas para terminais, como CMD, Powershell ou MinTTY, outros aplicativos ainda não o veem, por exemplo, se você executa este comando em um terminal:
winpty rdcli
Você receberá este erro:
winpty: error: cannot start 'rdcli': Not found in PATH
Mas depois de reiniciar o sistema, o comando funcionará.
Não há milagres - a variável PATH (ou seus equivalentes) é usada em todos os sistemas operacionais.
Se um pacote estiver disponível instantaneamente após a instalação, é porque ele se instalou em uma pasta que já está no PATH. Exemplo do Windows:
C:\WINDOWS\system32
, Linux :/usr/bin
.Se o pacote não estiver disponível imediatamente, ele se instalou em sua própria pasta e o adicionou ao PATH.
Não há necessidade de reiniciar - qualquer novo programa terá o PATH atual quando iniciado. Se você estiver no terminal, basta fechá-lo e abrir uma nova janela de terminal. No máximo, você pode sair e fazer login novamente, mas reiniciar é demais.