Nonaktifkan bunyi bip PowerShell di backspace

82

Fitur ini tampaknya telah ditambahkan di PowerShell versi 5.1, karena saya tidak menemukannya di laptop saya yang masih menjalankan 5.0.

Saat menekan Backspacedi PowerShell, itu akan mengeluarkan suara 'bip' jika tidak ada (lebih) teks untuk dihapus. Ini cukup menjengkelkan jika Anda secara tidak sengaja menahan tombol terlalu lama, karena suaranya akan berlangsung sebentar setelah Anda melepaskannya.

Saya menemukan pertanyaan Pengguna Super ini yang menyarankan untuk menonaktifkan layanan Bip, yang tidak berfungsi, tetapi saya ingin tetap dapat menggunakan bip di skrip.

Bagaimana cara menonaktifkan suara "bip pada backspace" tanpa menonaktifkan bip sepenuhnya?

FastEthernet
sumber
7
Set-PSReadlineOption -BellStyle None
user364455
1
@PetSerAl Itu bekerja, tetapi saya harus mengaturnya setiap kali saya membuka jendela PowerShell baru. Apakah ada cara untuk membuat pengaturan tetap?
FastEthernet
2
@FastEthernet Tambahkan ke File Profil PowerShell
DavidPostill
1
@PetSerAl Silakan kirim jawaban.
FastEthernet

Jawaban:

112

Bunyi bip disediakan oleh PSReadlinemodul, yang dikirimkan bersama Windows 10. Anda harus mengubah PSReadlineopsi untuk menonaktifkan bel:

Set-PSReadlineOption -BellStyle None

Jika Anda ingin perubahan ini untuk semua sesi PowerShell di masa mendatang, maka Anda perlu menambahkan perintah ini ke profil PowerShell Anda . Misalnya, untuk menetapkan opsi untuk "Pengguna Saat Ini, Host Saat Ini" ( $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"

Baris pertama memungkinkan profil Anda menjalankan skrip startup ketika PowerShell terbuka ( Tentang Kebijakan Eksekusi ). Baris kedua menguji apakah Anda sudah memiliki skrip startup yang ditetapkan untuk "Pengguna Saat Ini, Tuan Rumah Saat Ini". Baris ketiga menambahkan opsi bel ke skrip startup Anda.

pengguna364455
sumber
5
@Odys no - itu adalah cara yang sama Anda harus melakukannya di Bash / ZSH atau shell Unix juga.
Tamoghna Chowdhury
21

Solusi yang lebih permanen yang memperluas jawaban @PetSerAl :

  1. Jalankan PowerShell sebagai administrator.
  2. Jalankan: set-executionpolicy remotesigned. Ini akan memungkinkan skrip PowerShell dijalankan di komputer Anda. Jika Anda tidak yakin tentang apa yang tidak dilanjutkan.
  3. Pergi ke C:\Windows\System32\WindowsPowerShell\v1.0jika Anda menggunakan Windows 10.
  4. Buat file dengan nama Microsoft.PowerShell_profile.ps1.
  5. Edit file itu dan tambahkan Set-PSReadlineOption -BellStyle None.
  6. Buka konsol PowerShell baru dan Anda seharusnya tidak mendengar bunyi bip lagi.

Semua konsol PowerShell (baru) untuk semua pengguna di komputer Anda sekarang diam.

Jawaban ini untuk Windows 10. Untuk versi Windows lainnya, folder mungkin berbeda.

Odys
sumber
Set-ExecutionPolicymungkin memerlukan izin tinggi, jadi jika Anda ingin mengubah pengaturan ini hanya untuk pengguna Anda sendiri, Anda dapat menggunakannya dengan -Scope CurrentUserargumen.
mehmetseckin
1

Saya mengajukan item Github ini ke PsReadLine, karena saya tidak yakin perubahan ini disengaja - https://github.com/lzybkr/PSReadLine/issues/422

Craig
sumber
2
Ini tidak memberikan jawaban untuk pertanyaan dan seharusnya diposting sebagai komentar. Non-jawaban dapat dihapus.
G-Man
1

Adaptasi jawaban @Odys menggunakan Bash shell pada Windows Subsystem untuk Linux (dengan asumsi Anda telah mengaktifkannya).

1 Buka prompt perintah sebagai administrator, dan jalankan

set-executionpolicy remotesigned

2 Ketikkan bashuntuk memulai shell bash

3 Ubah ke direktori yang tepat

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

4 Buat file dengan nama "Microsoft.Powershell_profile.ps1" dan tulis "Set-PSReadlineOption -BellStyle None" di dalamnya

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
Evan Rosica
sumber
Saya tidak dapat menambahkan file di bawah jalur yang diberikan, yang tidak mengejutkan karena hak akses ke folder tidak termasuk tulis. Saya mencoba mengubah hak akses, tetapi tidak berhasil. Apakah Anda menghadapi masalah seperti ini?
lulijeta
cobalah sudo chmod 644 ./Microsoft.Powershell_profile.ps1untuk memberikan diri Anda hak istimewa. Saya tidak ingat kata sandi root saya, jadi saya tidak bisa memastikan ini berfungsi.
Evan Rosica
Terima kasih tetapi chmod hanya dapat mencoba mengubah izin akses file hanya jika file ada. Masalah saya adalah bahwa saya tidak dapat membuat Microsoft.Powershell_profile.ps1 di bawah folder v1.0. v1.0 (folder) tidak memiliki hak akses untuk menulis di atasnya, oleh karena itu saya tidak dapat membuat file di bawah folder itu. Saya mencoba mengubah hak akses v1.0, tetapi ternyata chmod memiliki beberapa masalah dengan subsistem. Bagaimana Anda bisa membuat file di bawah v1.0?
lulijeta