Como removo permanentemente um alias padrão do Powershell?


22

Por alguma razão desconhecida, os desenvolvedores incluíram "curl" como um alias para Invoke-WebRequest, mesmo que não seja compatível com a implementação adequada de curl, o que significa que fica no caminho quando tento fazer uma solicitação de curl. Posso remover o alias usando Remove-Item alias:curl, mas da próxima vez que inicio o Powershell, o alias retornou. Existe uma maneira de removê-lo permanentemente sem precisar executar um script toda vez que inicio?


apenas FYI: Remove-Item alias:curlEmiti o mesmo comando dentro do Windows Server 2019 e ele não aparece novamente mesmo após a reinicialização
matson kepson

Respostas:


33

Pule esta etapa se você já possui um perfil do PowerShell:

New-Item $profile -force -itemtype file

Em seguida, edite seu perfil:

notepad $profile

Adicione a seguinte linha a ela:

remove-item alias:curl

Salve, feche o bloco de notas e recarregue o perfil com o comando abaixo ou feche e abra o Powershell para aplicar o perfil:

. $profile

11
Obrigado. Devo dizer que é irritante que os desenvolvedores do PowerShell não tenham pensado nisso, forçando-nos a agora resolver o problema dessa maneira.
Nathan Ridley

Eu não acho que seja para ser uma substituição 1: 1. O Powershell se concentra no uso abrangente de um conjunto definido de parâmetros e na ligação automática de parâmetros (o que é realmente ótimo quando você entra nele). Fornecer o alias de curl é mostrar às pessoas acostumadas a * nix que existe um equivalente de curl no Powershell.
megamorf

11
O primeiro passo sempre pode ser pulado. Acabei de fazer e recebi um pop-up perguntando se eu queria criar o arquivo.
np8 23/08/17

FYI: Para alguns pseudônimos, você precisará anexar "-Force"
Dan Friedman

A coisa "engraçada" é que até os documentos azuis mostram comandos curl para testar rapidamente a coisa. Comandos onda reais, não Invoke-WebRequestsintaxe ...
Akos Lukacs

4

Eu continuaria usando em curl.exevez de apenas curl. Essa abordagem não depende do PowerShell sendo executado com um perfil específico (e o PowerShell pode ser executado sem nenhum perfil usando o -NoProfileswitch).


11
Eu poderia argumentar que, em teoria, o powershell pode eventualmente rodar em unix, onde os arquivos de programa não têm uma extensão ".exe". Não faz absolutamente sentido unificar as pessoas para que os aliases estejam ativados nos scripts . Eu tenho que me perguntar se essa escolha de design ruim foi deliberada para tentar matar a pilha de software GNU de código aberto no Windows. E por que não temos pelo menos um "comando" incorporado para forçar o shell a procurar um programa real? O Powershell realmente falha no princípio do KISS.
Johan Boulé

11
@ JohanBoulé Não há necessidade de teorias da conspiração, foi apenas uma supervisão. O PowerShell 6 já é executado no Linux e os problemas de alias são parcialmente corrigidos. Veja este link: initialsession: Onda de remoção e aliases wget , Remova todos os aliases internos e colocá-los em um módulo , Fornecer uma sintaxe para chamar binários nativos quando seu nome é alias
beatcracker

Nenhum desses PRs é mesclado. Apenas dizendo.
Dan Friedman

0

adicionar Remove-Item alias:curao script de execução automática do powershell

acima de XP, 2003:

%ALLUSERSPROFILE%\Documents\Msh\profile.msh
%ALLUSERSPROFILE%\Documents\Msh\Microsoft.Management.Automation.msh_profile.msh

XP, 2003:

%USERPROFILE%\My Documents\msh\profile.msh
%USERPROFILE%\My Documents\msh\Microsoft.Management.Automation.msh_profile.msh
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.