En la definición del indicador de terminal en mi .bashrc
archivo, entre otras cosas, tengo este fragmento de código:
${debian_chroot:+($debian_chroot)}
¿Qué hace esto? ¿Lo necesito?
Respuesta1
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 tienes un sistema Debian chroot dentro de otro sistema Debian (ubuntu está basado en Debian). Entonces esto es para una mejor descripción general. Para distinguir si estás en el chroot o no.
Cuando tienes un chroot de otro sistema, por ejemplo, /srv/nfs4/netboot/
puedes establecer un nombre para este chroot /srv/nfs4/netboot/etc/debian_chroot
(en mi caso es una unidad netboot nfs4 pxe):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
Y luego, cuando haces chroot dentro:
chroot /srv/nfs4/netboot/
Su mensaje se ve así:
(netboot)user@host:~#
Respuesta2
Generalmente, ${var:+value}
significa:
if $var is defined and not null; then use 'value'; else do nothing
La debian_chroot
variable se define en /etc/bash.bashrc
el archivo. Toma el contenido del /etc/debian_chroot
archivo si este existe y es legible. Por defecto este archivo no existe.
Para obtener más detalles, consulte:
Ahora, para entender mejor qué está sucediendo exactamente allí, haga lo siguiente en la terminal:
radu@Radu:~$
PS1='${var:+($var)}\u@\h:\w\$ '
radu@Radu:~$var="prueba"
----
|
------------------
|
V
(prueba)radu@Radu:~$var=""
radu@Radu:~$var="y así sucesivamente"
(y así sucesivamente)radu@Radu:~$
Respuesta3
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 de $debian_chroot
con sus pares alrededor).
$debian_chroot
está configurado /etc/bash.bashrc
en el contenido de /etc/debian_chroot
si ese archivo existe (no existe de forma predeterminada) y $debian_chroot
aún no tiene un valor.
${debian_chroot:+($debian_chroot)}
generalmente se usa para definir su indicador Bash, por ejemplo
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Como sugiere el nombre, puede usar esta variable para indicar en qué chroot se encuentra colocándola etc/debian_chroot
en las carpetas raíz de su chroot.
Si no sabes qué es un chroot, es probable que no lo necesites ;-) Pero aun así puedes abusar de él para incluir otra información en tu mensaje de Bash.
Por defecto no hace nada.
Respuesta4
Si nunca necesita usarlo debian_chroot
, es un lugar útil para colocar 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 su símbolo del sistema cambia con el tiempo:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Después de configurar la hora una vez, para obtener un reloj en funcionamiento que se actualice cada segundo, use:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &