En su pregunta, implica que no está citando la línea; eso es claramente incorrecto, porque entonces el espacio separaría la asignación de argumento "PS1 = [\ u @ \ h" del comando "\ W] \ $". Tenga en cuenta que cada personaje es importante.
De todos modos, lo que probablemente esté haciendo es usar comillas dobles (") en lugar de simples ('). Se comportan de manera muy diferente cuando se trata de que el intérprete de comandos interprete lo que escribió. Con comillas dobles, intentará hacer cosas inteligentes con las secuencias de barra invertida / algún carácter. Para esta tarea, dado que no hay nada especial sobre \ u, \ h y \ W, no se tocan; los corchetes pueden tener significados especiales en varios lugares, pero no en este caso, así que también se dejan en su lugar; pero dado que $
tiene una variedad de significados, todos ellos especiales, la \$
secuencia se interpreta como "ignorar la especialidad del signo de dólar, y simplemente dejarla allí", y esa secuencia se reemplaza por un signo de dólar único sin analizar más. El resultado de todo eso se asigna aPS1
, y dado que hay un signo de dólar literal, y no la \$
secuencia mágica cuando el shell construye la solicitud real, solo obtienes el signo de dólar, y no el carácter efectivo dependiente del usuario. El análisis real es un poco más complicado, pero esa es la esencia de este ejemplo en particular.
Lo que escribió: PS1="[\u@\h \W]\$ "
Lo que asignó el shell: PS1 <- "[\u@\h \W]$ "
Lo que quería: PS1 <- "[\u@\h \W]\$ "
Lo que debe escribir:PS1='[\u@\h \W]\$ '
Lo que debe hacer a continuación: lea algo como este tutorial para obtener más información sobre las citas de shell.
PS1=[\u@\h \W]\$
vuelve-bash: W]$: command not found
.