(1 respuesta)
Cerrado hace 2 años .
Solía usar '' y "" (comillas simples y dobles) indistintamente en la línea de comando, pero recientemente noté que '$HOME/some/dir' no se expande, mientras que "$HOME/some/dir" es. Busqué un poco y encontré que "" permite algunos protección de caracteres especiales, mientras que '' permite una protección completa. Entonces, ¿qué otros caracteres están protegidos por ''? y no "" ?
EDITAR:¿Qué son prácticos situaciones en las que estas diferencias pueden ser significativas?
Respuesta aceptada:
Eche un vistazo a la página de manual de bash. Hay una sección completa sobre citas. Debido a que tiene licencia bajo GFDL, que no es compatible con la licencia CC-BY-SA que se usa aquí, no citaré todo, pero realmente leer esa es la respuesta más definitiva.
En resumen, las comillas simples detienen toda interpretación:la cadena se representa literalmente. Las comillas dobles dejan $ (signo de dólar), ` (comilla inversa) como especial y (barra invertida) como especial cuando va seguido de otros caracteres determinados. ¡Y ! se tratará de manera especial si la función de expansión del historial está habilitada (lo cual es predeterminado).
En el uso práctico, el $ es el gran problema, ya que a menudo uno puede querer las diversas expansiones que permite (variables y más), al tiempo que evita que el shell confunda la mayor parte de la línea de comandos.