Wyłącz sygnał dźwiękowy PowerShell na backspace

82

Wygląda na to, że ta funkcja została dodana w wersji 5.1 programu PowerShell, ponieważ nie znajduję jej na moim laptopie z systemem 5.0.

Po naciśnięciu Backspacew programie PowerShell wyemituje sygnał dźwiękowy, jeśli nie ma (więcej) tekstu do usunięcia. Jest to dość irytujące, jeśli przypadkowo przytrzymasz klawisz zbyt długo, ponieważ dźwięk zwolni się przez chwilę po zwolnieniu.

Znalazłem to pytanie superużytkownika, które sugeruje wyłączenie usługi Beep, która działa, ale chciałbym nadal móc używać dźwięków w skryptach.

Jak wyłączyć dźwięk „beep on backspace” bez całkowitego wyłączenia sygnałów?

FastEthernet
źródło
7
Set-PSReadlineOption -BellStyle None
PetSerAl
1
@ PetSerAl To działa, ale muszę to ustawić za każdym razem, gdy otwieram nowe okno PowerShell. Czy jest jakiś sposób, aby ustawienie się trzymało?
FastEthernet
2
@FastEthernet Dodaj go do pliku profilu PowerShell
DavidPostill
1
@PetSerAl Proszę opublikować odpowiedź.
FastEthernet

Odpowiedzi:

112

Sygnał dźwiękowy jest dostarczany przez PSReadlinemoduł dostarczany z systemem Windows 10. Musisz zmienić PSReadlineopcję, aby wyłączyć dzwonek:

Set-PSReadlineOption -BellStyle None

Jeśli chcesz tę zmianę dla wszystkich przyszłych sesji PowerShell, musisz dodać to polecenie do swojego profilu PowerShell . Na przykład, aby ustawić opcję „Bieżący użytkownik, bieżący host” ( $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"

Pierwszy wiersz umożliwia Twojemu profilowi ​​uruchomienie skryptu startowego po otwarciu programu PowerShell (informacje o zasadach wykonywania ). Druga linia sprawdza, czy masz już skrypt uruchamiania zdefiniowany dla „Bieżący użytkownik, bieżący host”. Trzecia linia dodaje opcję dzwonka do skryptu uruchamiania.

PetSerAl
źródło
5
@Odys nie - w ten sam sposób będziesz musiał to zrobić w Bash / ZSH lub w dowolnej powłoce uniksowej.
Tamoghna Chowdhury,
21

Bardziej trwałe rozwiązanie, które rozszerza odpowiedź @PetSerAl :

  1. Uruchom PowerShell jako administrator.
  2. Wykonanie: set-executionpolicy remotesigned. Umożliwi to uruchamianie skryptów PowerShell na twoim komputerze. Jeśli nie masz pewności, co to jest, nie kontynuuj.
  3. Przejdź do, C:\Windows\System32\WindowsPowerShell\v1.0jeśli korzystasz z systemu Windows 10.
  4. Utwórz plik o nazwie Microsoft.PowerShell_profile.ps1.
  5. Edytuj ten plik i dodaj Set-PSReadlineOption -BellStyle None.
  6. Otwórz nową konsolę PowerShell i nie powinieneś już słyszeć sygnału dźwiękowego.

Wszystkie (nowe) konsole PowerShell dla wszystkich użytkowników komputera są teraz ciche.

Ta odpowiedź dotyczy systemu Windows 10. W przypadku innych wersji systemu Windows folder może się różnić.

Odys
źródło
Set-ExecutionPolicymoże wymagać podwyższonych uprawnień, więc jeśli chcesz zmienić to ustawienie tylko dla własnego użytkownika, możesz użyć go z -Scope CurrentUserargumentem.
mehmetseckin
2

Złożyłem ten element Github przeciwko PsReadLine, ponieważ nie jestem pewien, czy zmiana była zamierzona - https://github.com/lzybkr/PSReadLine/issues/422

Craig
źródło
1
Nie zapewnia to odpowiedzi na pytanie i powinien zostać opublikowany jako komentarz. Brak odpowiedzi może zostać usunięty.
G-Man,
1

Dostosowanie odpowiedzi @Odys przy użyciu powłoki Bash w podsystemie Windows dla systemu Linux (zakładając, że masz ją włączoną).

1 Otwórz wiersz polecenia jako administrator i uruchom

set-executionpolicy remotesigned

2 Wpisz, bashaby uruchomić powłokę bash

3 Przejdź do odpowiedniego katalogu

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

4 Utwórz plik o nazwie „Microsoft.Powershell_profile.ps1” i napisz do niego „Set-PSReadlineOption -BellStyle None”

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
Evan Rosica
źródło
Nie mogę dodać pliku pod podaną ścieżką, co nie jest zaskoczeniem, ponieważ prawa dostępu do folderu nie obejmują zapisu. Próbowałem zmodyfikować prawa dostępu, ale bez powodzenia. Czy napotkałeś taki problem?
lulijeta
spróbuj sudo chmod 644 ./Microsoft.Powershell_profile.ps1dać sobie przywileje. Nie pamiętam hasła roota, więc nie mogę potwierdzić, że to działa.
Evan Rosica,
Dziękujemy, ale chmod może próbować zmienić uprawnienia dostępu do plików tylko wtedy, gdy plik istnieje. Mój problem polega na tym, że nie mogę utworzyć Microsoft.Powershell_profile.ps1 w folderze v1.0. Wersja 1.0 (folder) nie ma prawa dostępu do zapisu na nim, dlatego nie mogę utworzyć pliku w tym folderze. Próbowałem zmienić prawa dostępu do wersji 1.0, ale najwyraźniej chmod ma pewne problemy z podsystemem. Jak udało Ci się utworzyć plik w wersji 1.0?
lulijeta