Desativar o bipe do PowerShell no backspace

82

Esse recurso parece ter sido adicionado no PowerShell versão 5.1, pois não o encontro no meu laptop ainda executando o 5.0.

Ao pressionar Backspaceno PowerShell, ele emitirá um som de 'bipe' se não houver (mais) texto para excluir. Isso é bastante irritante se você acidentalmente mantiver a tecla pressionada por muito tempo, pois o som continuará por um curto período de tempo depois que você a soltar.

Encontrei essa pergunta de superusuário que sugere desativar o serviço Beep, que funciona, mas eu ainda gostaria de poder usar bipes em scripts.

Como desabilito o som "bipe no backspace" sem desativar completamente os bipes?

Ethernet rápida
fonte
7
Set-PSReadlineOption -BellStyle None
user364455
11
@ PetSerAl Isso funciona, mas preciso defini-lo sempre que abro uma nova janela do PowerShell. Existe alguma maneira de fazer a configuração ficar?
FastEthernet
2
@FastEthernet Adicione ao seu PowerShell Perfil Arquivo
DavidPostill
11
@ PetSerAl Por favor, poste uma resposta.
FastEthernet

Respostas:

112

O sinal sonoro é fornecido pelo PSReadlinemódulo, fornecido com o Windows 10. Você precisa alterar a PSReadlineopção para desativar a campainha:

Set-PSReadlineOption -BellStyle None

Se você desejar essa alteração para todas as sessões futuras do PowerShell, precisará adicionar este comando ao seu perfil do PowerShell . Por exemplo, para definir a opção "Usuário atual, host atual" ( $Profile):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
if (!(Test-Path -Path "$Profile")) {New-Item -ItemType File -Path "$Profile" -Force}
Add-Content -Value "Set-PSReadlineOption -BellStyle None" -Path "$Profile"

A primeira linha permite que seu perfil execute um script de inicialização quando o PowerShell é aberto ( Sobre as políticas de execução ). A segunda linha testa para verificar se você já possui um script de inicialização definido para "Usuário Atual, Host Atual". A terceira linha adiciona a opção bell ao seu script de inicialização.

user364455
fonte
5
@ Odys não - é da mesma maneira que você faria no Bash / ZSH ou em qualquer shell Unix também.
Tamoghna Chowdhury 16/07
21

Uma solução mais permanente que amplia a resposta do @PetSerAl :

  1. Execute o PowerShell como administrador.
  2. Execute: set-executionpolicy remotesigned. Isso permitirá que os scripts do PowerShell sejam executados no seu computador. Se você não tiver certeza do que é isso, não continue.
  3. Vá para C:\Windows\System32\WindowsPowerShell\v1.0se você estiver no Windows 10.
  4. Crie um arquivo chamado Microsoft.PowerShell_profile.ps1.
  5. Edite esse arquivo e adicione Set-PSReadlineOption -BellStyle None.
  6. Abra um novo console do PowerShell e você não deverá mais ouvir o sinal sonoro.

Todos os novos consoles do PowerShell para todos os usuários no seu computador agora estão silenciosos.

Esta resposta é para o Windows 10. Para outras versões do Windows, a pasta pode ser diferente.

Odys
fonte
Set-ExecutionPolicypode exigir permissões elevadas, portanto, se você quiser alterar essa configuração apenas para seu próprio usuário, poderá usá-la com -Scope CurrentUserargumento.
mehmetseckin 27/02
1

Arquivei esse item do Github no PsReadLine, pois não tenho certeza se essa alteração foi intencional - https://github.com/lzybkr/PSReadLine/issues/422

Craig
fonte
2
Isso não fornece uma resposta para a pergunta e deveria ter sido postado como um comentário. As não respostas estão sujeitas a exclusão.
G-Man
1

Uma adaptação da resposta do @Odys usando o shell Bash no Windows Subsystem para Linux (supondo que você o tenha ativado).

1 Abra um prompt de comando como administrador e execute

set-executionpolicy remotesigned

2 Digite bashpara iniciar o shell bash

3 Altere para o diretório apropriado

cd /mnt/c/Windows/System32/WindowsPowerShell/v1.0 

4 Crie um arquivo chamado "Microsoft.Powershell_profile.ps1" e grave "Set-PSReadlineOption -BellStyle None" nele

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
Evan Rosica
fonte
Não consigo adicionar um arquivo no caminho especificado, o que não é surpresa, porque os direitos de acesso à pasta não incluem gravação. Eu tentei modificar os direitos de acesso, mas sem sorte. Você enfrentou um problema como este?
Lulijeta 4/10
tente sudo chmod 644 ./Microsoft.Powershell_profile.ps1se dar privilégios. Não me lembro da minha senha de root, portanto não posso confirmar se isso funciona.
Evan Rosica 04/10
Obrigado, mas o chmod só pode tentar alterar as permissões de acesso aos arquivos se o arquivo existir. Meu problema é que não consigo criar o Microsoft.Powershell_profile.ps1 na pasta v1.0. A v1.0 (pasta) não tem o direito de acesso para escrever nela, portanto, não consigo criar um arquivo nessa pasta. Tentei alterar os direitos de acesso da v1.0, mas aparentemente o chmod tem alguns problemas com o subsistema. Como você conseguiu criar um arquivo na v1.0?
Lulijeta 4/10