Olá, conforme o título, quando tento no prompt do cmder criar um alias com um sinal de igual, o que vem com =
fica truncado e não é armazenado corretamente no arquivo user-aliases.cmd
.
Por ex:
λ alias wifi=netsh wlan show profile $1 key=clear
será armazenado como:
wifi=netsh wlan show profile $1 ke
Eu acho que para $reasons
cmder lê y=clear
como $something
digno de avaliação e, portanto, é cortado do processo real de armazenamento de alias. A edição manual do arquivo supera rapidamente esse problema.
Eu estou perdendo algo descaradamente no Manual Effin ' cada vez maior que eu não li com precisão? 😛
Parece que o comando doskey (cujo alias envolve) lida com seu exemplo, portanto, pode ser um bug no script alias.bat.
Você pode depurar modificando alias.bat e alterando a primeira linha para <strong i="6">@echo</strong> on
. Olhando para ele agora, vejo que há um ponto em que o script divide a string de alias usando "=" como delimitador e presume que haverá apenas um = na string.
Aqui está uma correção: em alias.bat, encontre a linha que diz ":: validar alias" e, na linha a seguir, substitua o '2' por um '*', assim:
para / f "delims == tokens = 1, * usebackq" %% G in ( echo "%_x%"
) do (
Isso parece funcionar para mim com o seu exemplo.
Obrigado por explicar em detalhes o problema em questão, muito útil para mim, pois sou um novato em coisas de CMD! :)
Posso confirmar que sua correção corrigiu o problema, obrigado! Devo fazer um PR?
Posso criar uma solicitação de pull com a correção. Obrigado por confirmar que funciona para você.
Comentários muito úteis
Parece que o comando doskey (cujo alias envolve) lida com seu exemplo, portanto, pode ser um bug no script alias.bat.
Você pode depurar modificando alias.bat e alterando a primeira linha para
<strong i="6">@echo</strong> on
. Olhando para ele agora, vejo que há um ponto em que o script divide a string de alias usando "=" como delimitador e presume que haverá apenas um = na string.Aqui está uma correção: em alias.bat, encontre a linha que diz ":: validar alias" e, na linha a seguir, substitua o '2' por um '*', assim:
para / f "delims == tokens = 1, * usebackq" %% G in (
echo "%_x%"
) do (Isso parece funcionar para mim com o seu exemplo.