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.
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:
Entorno | Significado de $ al inicio de línea | Resultado al pegar “$ gpg –import ./mykey.gpg” |
---|---|---|
CMD (cmd.exe) | Nombre de ejecutable | Error “not recognized” |
PowerShell | Operador de variable (espera un nombre sin espacio) | Error de sintaxis inesperada |
Bash/Zsh/Fish | Prompt (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
- Verificar la instalación de GPG.
Introducegpg --version
; debería aparecer la lista de algoritmos soportados y la ruta de instalación. Si no, instala Gpg4win. - Asegurar permisos de escritura.
Si tu directorio%APPDATA%\gnupg
está protegido, abre CMD como administrador o cambia las ACL conicacls
. - Ubicar el fichero de clave.
Copiamykey.gpg
en una ruta corta, por ejemploC:\keys\mykey.gpg
, o referencia la ruta absoluta para evitar confusiones. - Importar la clave.
Ejecutagpg --import C:\keys\mykey.gpg
. Aparecerá el fingerprint y, si la confianza no está definida, un aviso. - Establecer confianza (opcional).
Iniciagpg --edit-key <tu‑fingerprint>
, escribetrust
y elige el nivel adecuado (normalmente5 = 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
Variable | Propósito | Valor típico |
---|---|---|
GNUPGHOME | Ubicación de los archivos de configuración y llaves | %USERPROFILE%\AppData\Roaming\gnupg |
PATH | Busca el ejecutable gpg.exe | Incluye C:\Program Files\GnuPG\bin |
TEMP | Guarda 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.