No hay un concepto especial aquí. En cambio, todo en el shell es una cadena literal, a menos que use explícitamente una expansión. Esta decisión de diseño facilita la asignación, bueno, de valores literales, que es el caso de uso principal de las asignaciones:
varname=value
no busca una variable llamada value, pero usa la cadena valueliteralmente. En bash, la mayoría de los caracteres "especiales" como + - /etc. no son especiales de ninguna manera: son solo parte de palabras literales al igual que los caracteres alfabéticos.
La sintaxis de expansión nos permite incrustar fácilmente valores dentro de una plantilla, p. Ej.
echo "Hello ${name}!"
(Tenga en cuenta que en el shell, las comillas delimitan '…'o "…"no delimitan cadenas, en cambio cambian las expansiones que se aplican: las comillas simples suprimen todas las expansiones y la división de palabras, las comillas dobles suprimen la división de palabras y la expansión global pero no la expansión variable, la expansión aritmética (solo Bash) ., o la sustitución de comandos Las siguientes palabras son equivalentes: foo\ bar, foo' 'bar, 'foo bar').
Una consecuencia del enfoque "todo es una cadena por defecto" es que los programas que no solo usan cadenas simples se vuelven más complicados. La sintaxis de la matriz de Bash es notoriamente confusa. La expansión aritmética es algo no obvio. Sin embargo, tales programas no son los más adecuados para los scripts de shell.
Lectura recomendada: la descripción POSIX de la sintaxis y semántica de shell: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html