Solución definitiva al error “\$ is not recognized” en Windows CMD al usar GPG

Evitar que el Símbolo del sistema de Windows interrumpa tu flujo de trabajo con el temido mensaje '$' is not recognized as an internal or external command es mucho más sencillo de lo que parece. Esta guía completa explica el origen del error, ofrece soluciones inmediatas y proporciona alternativas duraderas para trabajar con utilidades GNU como GnuPG en cualquier versión de Windows.

Índice

Descripción del problema

Estás siguiendo una guía de seguridad, copias un bloque de código que empieza con $—algo habitual en manuales escritos para Bash—y lo pegas en Command Prompt (CMD) con derechos de administrador. En cuanto presionas Enter, aparece la advertencia:

'$' is not recognized as an internal or external command,
operable program or batch file.

Windows entiende que intentas ejecutar un programa literal llamado “$”. Como no existe ningún ejecutable con ese nombre, la operación se detiene antes incluso de llegar a la verdadera orden (gpg --import …) que pretendías usar.

Por qué aparece el mensaje de error

En la tradición Unix‑like el carácter $ no forma parte del comando; es solo un marcador visual que indica el prompt de un usuario sin privilegios. Su contraparte de administrador suele ser #. Cuando ese mismo texto se copia en CMD, el intérprete de órdenes de Microsoft trata cada carácter como parte de la instrucción, sin distinguir entre “marcador” y “orden”.

La diferencia radica en cómo los distintos shells procesan la línea de entrada:

EntornoSignificado de $ al inicio de líneaResultado al pegar “$ gpg –import ./mykey.gpg”
CMD (cmd.exe)Nombre de ejecutableError “not recognized”
PowerShellOperador de variable (espera un nombre sin espacio)Error de sintaxis inesperada
Bash/Zsh/FishPrompt (no se envía al intérprete)Comando ejecutado con normalidad

Solución rápida

Suprime el símbolo de dólar y ejecuta la orden tal cual:

gpg --import .\mykey.gpg

Las barras inclinadas (/) funcionan igual que las invertidas (\) en GPG para Windows, así que no es necesario cambiarlas, pero hacerlo puede mejorar la legibilidad en entornos puramente Windows.

Procedimiento paso a paso en CMD

  1. Verificar la instalación de GPG.
    Introduce gpg --version; debería aparecer la lista de algoritmos soportados y la ruta de instalación. Si no, instala Gpg4win.
  2. Asegurar permisos de escritura.
    Si tu directorio %APPDATA%\gnupg está protegido, abre CMD como administrador o cambia las ACL con icacls.
  3. Ubicar el fichero de clave.
    Copia mykey.gpg en una ruta corta, por ejemplo C:\keys\mykey.gpg, o referencia la ruta absoluta para evitar confusiones.
  4. Importar la clave.
    Ejecuta gpg --import C:\keys\mykey.gpg. Aparecerá el fingerprint y, si la confianza no está definida, un aviso.
  5. Establecer confianza (opcional).
    Inicia gpg --edit-key <tu‑fingerprint>, escribe trust y elige el nivel adecuado (normalmente 5 = ultimate para tu propia clave).

Uso de PowerShell como alternativa

PowerShell es más potente que CMD y tiene un parsing diferente, pero el carácter $ está reservado para variables, por lo que tampoco puede aparecer al inicio. La solución es idéntica: elimina el dólar. Ejemplo:

PS C:\> gpg --import ./mykey.gpg

Si lo deseas, añade GPG a tu perfil para llamarlo desde cualquier ruta:

notepad $PROFILE
Agrega la línea:
$env:Path += ";C:\Program Files (x86)\GnuPG\bin"

Variables de entorno relevantes

VariablePropósitoValor típico
GNUPGHOMEUbicación de los archivos de configuración y llaves%USERPROFILE%\AppData\Roaming\gnupg
PATHBusca el ejecutable gpg.exeIncluye C:\Program Files\GnuPG\bin
TEMPGuarda operaciones temporales de cifrado%USERPROFILE%\AppData\Local\Temp

Entornos Unix‑like sobre Windows

Git Bash

Viene incluido con Git para Windows. Abre Git Bash desde el menú Inicio y podrás pegar comandos completos con $ sin cambios. La ruta /c/Users/TuUsuario corresponde a C:\Users\TuUsuario.

WSL (Windows Subsystem for Linux)

Permite instalar distribuciones completas (Ubuntu, Debian, Fedora) directamente desde Microsoft Store. Una vez configurado, el comando se ejecuta exactamente igual que en una terminal Linux nativa:

$ gpg --import ./mykey.gpg

El sistema de archivos de Windows se monta en /mnt/c, por lo que C:\keys\mykey.gpg se referencia como /mnt/c/keys/mykey.gpg.

MSYS2 / MinGW

Ofrece un administrador de paquetes pacman con cientos de utilidades GNU. Tras instalar pacman -S gnupg, cualquier tutorial que empiece con $ funcionará sin modificaciones.

Buenas prácticas al copiar comandos de guías

  • Identifica el prompt. Si ves $ o # al inicio, no lo copies en CMD ni en PowerShell.
  • Observa posibles saltos de línea. Algunos tutoriales combinan varias órdenes con &&; asegúrate de que tu shell los interprete igual o separa las líneas.
  • Revisa el formato de las comillas. Copiar desde un PDF puede reemplazar comillas simples por las “tipográficas”, causando errores.
  • Confirma la extensión del archivo. En Windows los archivos ocultos pueden no mostrarse en el Explorador; habilita “Extensiones de nombre de archivo” para evitar confusiones.

Preguntas frecuentes

  • ¿Se puede dejar el $ si creo un alias en CMD?
    Técnicamente podrías crear un archivo llamado $.bat que simplemente invoque GPG, pero es innecesario y poco portable.
  • Algunas guías usan # en lugar de $. ¿Debo quitarlo también?
    Sí. # suele indicar que el comando se ejecuta como root en Linux. En CMD provocará un error similar.
  • ¿Por qué en la documentación de PowerShell aparecen PS C:\>?
    Ese prefijo muestra la ubicación actual y el tipo de shell; no forma parte de la orden.
  • ¿GPG acepta rutas con espacios?
    Sí, pero necesitas comillas dobles: gpg --import "C:\Mi carpeta\mykey.gpg".
  • ¿Es seguro copiar claves entre discos?
    Usa medios encriptados o ZIP protegido por contraseña; las claves privadas deben permanecer fuera de repositorios públicos.

Conclusión

El error '$' is not recognized… no indica un problema de GPG ni de la clave, sino una simple confusión de ámbitos entre entornos Unix y Windows. Eliminando el símbolo de dólar o trabajando en un shell compatible evitarás bloqueos y podrás importar, firmar y gestionar tus llaves con total normalidad. Aprovecha PowerShell para tareas cotidianas, o instala Git Bash, MSYS2 o WSL si deseas mantener la sintaxis original de los tutoriales. De esta forma tu flujo de trabajo permanecerá coherente entre plataformas y garantizarás la integridad de tu identidad criptográfica.

Índice