La variable predeterminada de PS1 en mi máquina (Kubuntu 13.10) es esta:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
Estoy buscando una referencia de cómo funciona la variable $ PS1 que, como mínimo, me permite comprender la variable PS1 anterior.
PS1
en un terminal, por ejemploPS1="How r u, \u?"
. El cambio solo durará hasta que cierre la terminal.Respuestas:
Referencias
Hasta ahora, no ha habido una sola referencia para todo lo que puede ir en un aviso de Bash, pero como es una característica que ha evolucionado durante décadas y probablemente varía de una distribución a otra, tal vez sea demasiado pedir. He tratado de resumir lo que encontré más útil aquí.
Este tutorial es el más completo, pero es muy largo y divagante. Algunas de las secciones más útiles:
\[
y\]
son necesarios.Esta guía explica cómo
${}
funciona en Bash en general, y esta pregunta Ask Ubuntu explica un poco más sobre cómo funciona esodebian_chroot
.Entre ellos, creo que se explican todos los caracteres en la variable predeterminada de Ubuntu PS1.
Explicación de la solicitud de Ubuntu
Hay tres partes en la solicitud:
\[\e]0;\u@\h: \w\a\]
establece la barra de título de una ventana xterm:\[
comienza una sección de caracteres no imprimibles\e]0;
es la secuencia de escape para 'establecer título de xterm' (creo que los números que no sean 0 establecerán otras propiedades de xterm, aunque no he probado esto)\u@\h: \w
el título a usar (ver abajo para\u
,\h
y\w
)\a
marca el final del título\]
marca el final de los caracteres no imprimibles${debian_chroot:+($debian_chroot)}
se expande al valor de $ debian_chroot entre paréntesis si se establece $ debian_chroot. Consulte esta pregunta para obtener más información sobre $ debian_chroot.\u@\h:\w\$
es el aviso en sí:\u
se expande al nombre de usuario actual\h
se expande al nombre de host actual\w
se expande al directorio de trabajo actual\$
se expande#
para root y$
para todos los demás usuariosfuente
De acuerdo con el Manual de referencia de Bash ,
PS1
es:Algunas otras buenas referencias pueden ser:
Mensaje de PS1 explicado para Linux / Unix
¿Qué hace "$ {debian_chroot: + ($ debian_chroot)}" en mi indicador de terminal?
Bash Shell PS1: 10 ejemplos para hacer que su sistema operativo de Linux sea como Angelina Jolie
fuente
\[
y\]
, sin embargo, ¿tiene alguna referencia para eso?\[
- comience una secuencia de caracteres que no se imprimen, que podrían usarse para incrustar una secuencia de control de terminal en el aviso;\]
- Finalizar una secuencia de caracteres que no se imprimen. Solo tómate tu tiempo y lee atentamente;)ss64.com parece tener la mejor referencia que he encontrado.
Explica las siguientes variables:
El
\[ ... \]
define una serie de caracteres que no se imprimen. Deben realizar un seguimiento correcto de la posición del cursor.El
\e
en su mensaje inicia una secuencia de escape. Más sobre ésos aquí (nota "Esc" en esa página es la\e
secuencia).tput
para obtener el código de escape para usted.${debian_chroot:+($debian_chroot)}
es la expansión de parámetros. Ver aquí($debian_chroot)
si$debian_chroot
se establece de otra manera nada.fuente