Deshabilite el pitido de PowerShell en la tecla de retroceso

82

Esta característica parece haber sido agregada en PowerShell versión 5.1, ya que no la encuentro en mi computadora portátil que aún ejecuta 5.0.

Al presionar Backspaceen PowerShell, emitirá un pitido si no hay (más) texto para eliminar. Esto es bastante molesto si accidentalmente mantienes presionada la tecla durante demasiado tiempo, ya que el sonido continuará por un corto tiempo después de soltarlo.

Encontré esta pregunta de Superusuario que sugiere deshabilitar el servicio Beep, que funciona, pero aún me gustaría poder usar pitidos en los scripts.

¿Cómo desactivo el sonido de "pitido en el espacio de retroceso" sin desactivar los pitidos por completo?

FastEthernet
fuente
77
Set-PSReadlineOption -BellStyle None
user364455
1
@PetSerAl Eso funciona, pero tengo que configurarlo cada vez que abro una nueva ventana de PowerShell. ¿Hay alguna manera de hacer que la configuración se mantenga?
FastEthernet
2
@FastEthernet Agréguelo a su archivo de perfil de PowerShell
DavidPostill
1
@PetSerAl Por favor, publique una respuesta.
FastEthernet

Respuestas:

112

El PSReadlinemódulo, que se entrega con Windows 10. proporciona el pitido. Debe cambiar la PSReadlineopción para desactivar el timbre:

Set-PSReadlineOption -BellStyle None

Si desea este cambio para todas las futuras sesiones de PowerShell, debe agregar este comando a su perfil de PowerShell . Por ejemplo, para configurar la opción para "Usuario actual, Host actual" ( $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 primera línea permite que su perfil ejecute un script de inicio cuando se abre PowerShell ( Acerca de las políticas de ejecución ). La segunda línea prueba para ver si ya tiene un script de inicio definido para "Usuario actual, Host actual". La tercera línea agrega la opción de campana a su secuencia de comandos de inicio.

usuario364455
fuente
55
@Odys no, esa es la misma forma en que tendrías que hacerlo en Bash / ZSH o en cualquier shell de Unix también.
Tamoghna Chowdhury
21

Una solución más permanente que extiende la respuesta de @PetSerAl :

  1. Ejecute PowerShell como administrador.
  2. Ejecutar: set-executionpolicy remotesigned. Esto permitirá que los scripts de PowerShell se ejecuten en su computadora. Si no está seguro de qué es eso, no continúe.
  3. Ve a C:\Windows\System32\WindowsPowerShell\v1.0si estás en Windows 10.
  4. Crea un archivo llamado Microsoft.PowerShell_profile.ps1.
  5. Edite ese archivo y agréguelo Set-PSReadlineOption -BellStyle None.
  6. Abra una nueva consola PowerShell y ya no debería escuchar el pitido.

Todas las consolas PowerShell (nuevas) para todos los usuarios de su computadora ahora están en silencio.

Esta respuesta es para Windows 10. Para otras versiones de Windows, la carpeta puede diferir.

Odys
fuente
Set-ExecutionPolicypuede requerir permisos elevados, por lo que si desea cambiar esta configuración solo para su propio usuario, puede usarla con -Scope CurrentUserargumentos.
mehmetseckin
1

Archivé este artículo de Github contra PsReadLine, ya que no estoy seguro de que este cambio fuera intencional - https://github.com/lzybkr/PSReadLine/issues/422

Craig
fuente
2
Esto no proporciona una respuesta a la pregunta y debería haberse publicado como un comentario. Las no respuestas están sujetas a eliminación.
G-Man el
1

Una adaptación de la respuesta de @Odys usando el shell Bash en el Subsistema de Windows para Linux (suponiendo que lo tenga habilitado).

1 Abra un símbolo del sistema como administrador y ejecute

set-executionpolicy remotesigned

2 Escriba bashpara iniciar el shell bash

3 Cambie al directorio apropiado

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

4 Cree un archivo llamado "Microsoft.Powershell_profile.ps1" y escriba "Set-PSReadlineOption -BellStyle None" en él

echo "Set-PSReadlineOption -BellStyle None" >> Microsoft.Powershell_profile.ps1
Evan Rosica
fuente
No puedo agregar un archivo debajo de la ruta dada, lo cual no es sorprendente porque los derechos de acceso a la carpeta no incluyen escritura. Traté de modificar los derechos de acceso, pero no tuve suerte. ¿Te enfrentaste a un problema como este?
lulijeta
intenta sudo chmod 644 ./Microsoft.Powershell_profile.ps1darte privilegios. No recuerdo mi contraseña de root, así que no puedo confirmar que esto funcione.
Evan Rosica
Gracias, pero chmod solo puede intentar cambiar los permisos de acceso a los archivos solo si el archivo existe. Mi problema es que no puedo crear Microsoft.Powershell_profile.ps1 en la carpeta v1.0. v1.0 (carpeta) carece del derecho de acceso para escribir en él, por lo tanto, no puedo crear un archivo en esa carpeta. Traté de cambiar los derechos de acceso de v1.0, pero aparentemente chmod tiene algunos problemas con el subsistema. ¿Cómo logró crear un archivo en v1.0?
lulijeta