Disabilita il segnale acustico di PowerShell sul backspace


82

Questa funzionalità sembra essere stata aggiunta in PowerShell versione 5.1, poiché non la trovo sul mio portatile ancora in esecuzione 5.0.

Quando si preme Backspacein PowerShell, verrà emesso un segnale acustico se non ci sono (più) testi da eliminare. Questo è abbastanza fastidioso se si tiene premuto il tasto per troppo tempo, poiché il suono continuerà per un breve periodo dopo averlo rilasciato.

Ho trovato questa domanda Super User che suggerisce di disabilitare il servizio Beep, che funziona, ma vorrei essere ancora in grado di utilizzare i segnali acustici negli script.

Come disabilito il suono "beep on backspace" senza disabilitare completamente i bip?


7
Set-PSReadlineOption -BellStyle None
PetSerAl

1
@PetSerAl Funziona, ma devo impostarlo ogni volta che apro una nuova finestra di PowerShell. C'è un modo per rendere l'impostazione stick?
FastEthernet


2
@FastEthernet Aggiungilo al file del tuo profilo PowerShell
DavidPostill

1
@PetSerAl Si prega di inviare una risposta.
FastEthernet

Risposte:


112

Il segnale acustico viene fornito dal PSReadlinemodulo, fornito con Windows 10. È necessario modificare l' PSReadlineopzione per disabilitare la suoneria:

Set-PSReadlineOption -BellStyle None

Se si desidera questa modifica per tutte le sessioni future di PowerShell, è necessario aggiungere questo comando al proprio profilo PowerShell . Ad esempio, per impostare l'opzione per "Utente corrente, Host corrente" ( $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"

La prima riga consente al profilo di eseguire uno script di avvio all'apertura di PowerShell ( Informazioni sui criteri di esecuzione ). La seconda riga verifica se è già stato definito uno script di avvio per "Utente corrente, Host corrente". La terza riga aggiunge l'opzione campana allo script di avvio.


5
@Odys no - è lo stesso modo in cui dovresti farlo anche in Bash / ZSH o in qualsiasi shell Unix.
Tamoghna Chowdhury,

21

Una soluzione più permanente che estende la risposta di @PetSerAl :

  1. Esegui PowerShell come amministratore.
  2. Esegui: set-executionpolicy remotesigned. Ciò consentirà l'esecuzione degli script PowerShell sul tuo computer. Se non sei sicuro di cosa sia, non continuare.
  3. Vai a C:\Windows\System32\WindowsPowerShell\v1.0se sei su Windows 10.
  4. Crea un file chiamato Microsoft.PowerShell_profile.ps1.
  5. Modifica quel file e aggiungi Set-PSReadlineOption -BellStyle None.
  6. Apri una nuova console di PowerShell e non dovresti più sentire il segnale acustico.

Tutte le (nuove) console PowerShell per tutti gli utenti sul computer sono ora silenziose.

Questa risposta è per Windows 10. Per altre versioni di Windows, la cartella potrebbe essere diversa.


Set-ExecutionPolicypotrebbe richiedere autorizzazioni elevate, quindi se si desidera modificare questa impostazione solo per il proprio utente, è possibile utilizzarla con -Scope CurrentUserargomento.
Mehmetseckin,

2

Ho archiviato questo oggetto Github contro PsReadLine, poiché non sono sicuro che questa modifica sia stata intenzionale - https://github.com/lzybkr/PSReadLine/issues/422


1
Questo non fornisce una risposta alla domanda e avrebbe dovuto essere pubblicato come commento. Le non risposte sono soggette a cancellazione.
G-Man,

1

Un adattamento della risposta di @Odys usando la shell Bash sul sottosistema Windows per Linux (supponendo che tu l'abbia abilitato).

1 Aprire un prompt dei comandi come amministratore ed eseguire

set-executionpolicy remotesigned

2 Digitare bashper avviare la shell bash

3 Passare alla directory corretta

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

4 Crea un file chiamato "Microsoft.Powershell_profile.ps1" e scrivi "Set-PSReadlineOption -BellStyle None" su di esso

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1

Non riesco ad aggiungere un file nel percorso indicato, il che non sorprende perché i diritti di accesso alla cartella non includono la scrittura. Ho provato a modificare i diritti di accesso, ma senza fortuna. Hai affrontato un problema come questo?
Lulijeta,

prova sudo chmod 644 ./Microsoft.Powershell_profile.ps1a darti privilegi. Non ricordo la mia password di root, quindi non posso confermare che funzioni.
Evan Rosica,

Grazie, ma chmod può solo tentare di modificare le autorizzazioni di accesso ai file solo se il file esiste. Il mio problema è che non riesco a creare Microsoft.Powershell_profile.ps1 nella cartella v1.0. v1.0 (cartella) non ha il diritto di accesso per scrivere su di esso, quindi non posso creare un file in quella cartella. Ho provato a cambiare i diritti di accesso di v1.0, ma apparentemente chmod ha dei problemi con il sottosistema. Come sei riuscito a creare un file in v1.0?
Lulijeta,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.