Quando instalo algo como ffmpeg
with winget
, ele define aliases permanentes para ffmpeg
, ffplay
, & ffprobe
.
winget install gyan.ffmpeg
Não parece que esteja adicionando nada à minha variável de ambiente path. Se eu usar o Set-Alias
utilitário PowerShell, esse alias será efêmero, durando apenas até o final da sessão atual. Eventualmente, descobri que posso usar my $profile
para indicar uma lista de aliases que são instanciados toda vez que inicio meu shell.
O winget faz a mesma coisa apenas com um arquivo de "perfil" diferente? Existe um jeito melhor de fazer isso?
Do post Como criar aliases permanentes do PowerShell , cito a excelente resposta de Naigel :
Não, cmdlets como winget e outros módulos do PowerShell se instalam dentro da pasta de módulos do PowerShell. Depois de executar
import-module <name>
os comandos desse módulo agora podem ser usados. Comandos são apenas funções.Para descobrir onde seus módulos estão armazenados, execute o seguinte comando no PowerShell:
write-host $env:PSModulePath
Se você deseja replicar o mesmo que o winget, crie um novo script powershell, coloque o seguinte dentro:
E salve isso no caminho encontrado antes como um
*.psm1
arquivo onde o * é substituído por qualquer coisa que você desejar, é claro.Não encontrei a necessidade de realmente escrever meus próprios módulos e acabei apenas criando as funções dentro do meu profile.ps1, então não tenho certeza de qual é o local para carregar automaticamente seus módulos e se você precisa para adicionar um arquivo .psd1 próximo ao módulo para que ele funcione.
Esta resposta é apenas para você saber de que outra forma fazer isso, se usar um profile.ps1 estiver fora de questão.
Como o WinGet não é específico do PowerShell, ele não pode depender de recursos do PowerShell. Em vez disso , adiciona
%PATH%
(uma vez). Ele também mostra uma mensagem quando faz isso. Se você não viu a mensagem, ela pode já ter sido modificada%PATH%
no passado. WinGet adiciona%LOCALAPPDATA%\Microsoft\WinGet\Links\
(em sua forma expandida) ao do seu usuário%PATH%
(não ao de todo o sistema).WinGet cria links simbólicos nesta pasta. Eles podem ser usados em qualquer shell ou prompt de execução .
Na minha opinião sim, este método é superior, porque é eficaz em qualquer lugar.
No entanto, só funciona com
.exe
arquivos. Se precisar de aliases específicos do PowerShell (envolvendo cmdlets ou qualquer outro), você deverá usar métodos do PowerShell para criá-los permanentemente.$profile
é o caminho a seguir.