En mi definición de terminal en mi .bashrc
archivo, entre otras cosas, tengo este fragmento de código:
${debian_chroot:+($debian_chroot)}
¿Qué hace esto y lo necesito?
La parte importante para responder esta pregunta es este fragmento de /etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Significa que si la variable $debian_chroot
está vacía y el archivo /etc/debian_chroot
existe y es legible, la variable se establece en el contenido del archivo.
¿Para qué es esto? El archivo /etc/debian_chroot
es cuando tiene un sistema debian chrooteado dentro de otro sistema debian (ubuntu se basa en debian). Entonces esto es para una mejor visión general. Para distinguir si estás en el chroot o no.
Cuando tiene un chroot de otro sistema, por ejemplo /srv/nfs4/netboot/
, puede establecer un nombre para este chroot en /srv/nfs4/netboot/etc/debian_chroot
(en mi caso, es una unidad de arranque nfs4 pxe netboot):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
Y luego cuando haces chroot por dentro:
chroot /srv/nfs4/netboot/
Su mensaje se ve así:
(netboot)user@host:~#
En general, ${var:+value}
significa:
if $var is defined; then use 'value'; else do nothing
La debian_chroot
variable se define en el /etc/bash.bashrc
archivo. Toma el contenido del /etc/debian_chroot
archivo si este archivo existe y es legible. Por defecto este archivo no existe.
Para más detalles, ver:
Ahora, para comprender mejor qué está sucediendo exactamente allí, haga lo siguiente en la terminal:
radu@Radu:~$
PS1 = '$ {var: + ($ var)} \ u @ \ h: \ w \ $'
radu @ Radu: ~ $ var = "prueba"='${var:+($var)}\u@\h:\w\$ '
:~$="test"
--------
El ||
------------------------------------
El ||
V
(prueba) radu @ Radu: ~ $test)radu@Radu:~$ var = ""
radu @ Radu: ~ $ var = "y así sucesivamente"
(y así sucesivamente) radu @ Radu: ~ $=""
:~$="and so on"
and so on)radu@Radu:~$
Si la variable de entorno $debian_chroot
existe y no está vacía, ${debian_chroot:+($debian_chroot)}
se reemplaza por ($debian_chroot)
(ese es el valor $debian_chroot
con parens a su alrededor).
$debian_chroot
se establece en /etc/bash.bashrc
el contenido de /etc/debian_chroot
si ese archivo existe (no existe de manera predeterminada) y $debian_chroot
aún no tiene un valor.
${debian_chroot:+($debian_chroot)}
se usa generalmente para definir su solicitud de Bash, por ejemplo
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Como su nombre lo indica, puede usar esta variable para indicar en qué chroot se encuentra colocándolo etc/debian_chroot
en sus carpetas raíz de chroot.
Si no sabe qué es un chroot, es probable que no lo necesite ;-) Pero aún puede abusar de él para incluir otra información en su mensaje Bash
Por defecto no hace nada.
Si nunca necesita usarlo, debian_chroot
entonces es un lugar útil para poner la hora en que se mostró el símbolo del sistema usando:
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Escriba esto en su terminal y observe cómo cambia el símbolo del sistema con la hora:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Una vez que se establece el tiempo una vez, para obtener un reloj en funcionamiento que se actualiza cada segundo uso:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &