Na minha definição de prompt de terminal no meu .bashrc
arquivo, entre outras coisas, tenho este trecho de código:
${debian_chroot:+($debian_chroot)}
O que isso faz e eu preciso?
A parte importante para responder a esta pergunta é este trecho de /etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Isso significa que, se a variável $debian_chroot
estiver vazia e o arquivo /etc/debian_chroot
existir e for legível, a variável será configurada para o conteúdo do arquivo.
Agora, o que é isso? O arquivo /etc/debian_chroot
é quando você tem um sistema debian com chroot dentro de outro sistema debian (o ubuntu é baseado no debian). Portanto, isso é para uma melhor visão geral. Para distinguir se você está no chroot ou não.
Quando você tem um chroot de outro sistema, por exemplo, /srv/nfs4/netboot/
pode definir um nome para esse chroot /srv/nfs4/netboot/etc/debian_chroot
(no meu caso, é uma unidade netfoot nfs4 pxe):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
E então, quando você chroot dentro:
chroot /srv/nfs4/netboot/
Seu prompt é assim:
(netboot)user@host:~#
Geralmente, ${var:+value}
significa:
if $var is defined; then use 'value'; else do nothing
A debian_chroot
variável é definida no /etc/bash.bashrc
arquivo Leva o conteúdo do /etc/debian_chroot
arquivo se este arquivo existe e é legível. Por padrão, esse arquivo não existe.
Para mais detalhes, consulte:
Agora, para entender melhor o que exatamente está acontecendo lá, faça o seguinte no terminal:
radu@Radu:~$
PS1 = '$ {var: + ($ var)} \ u @ \ h: \ w \ $' radu @ Radu : ~ $ var = "teste" ---- | ------------------ |
V
( teste ) radu @ Radu : ~ $ var = "" radu @ Radu : ~ $ var = "e assim por diante" ( e assim por diante ) radu @ Radu : ~ $
Se a variável de ambiente $debian_chroot
existir e não estiver vazia, ${debian_chroot:+($debian_chroot)}
será substituída por ($debian_chroot)
(esse é o valor de $debian_chroot
com parens ao seu redor).
$debian_chroot
é definido no /etc/bash.bashrc
conteúdo de /etc/debian_chroot
se esse arquivo existe (por padrão não existe) e $debian_chroot
ainda não tem um valor.
${debian_chroot:+($debian_chroot)}
geralmente é usado para definir seu prompt do Bash, por exemplo
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Como o nome sugere, você pode usar essa variável para indicar em qual chroot você está inserindo etc/debian_chroot
as pastas raiz do chroot.
Se você não sabe o que é um chroot, é provável que não precise ;-) Mas você ainda pode abusar dele para incluir outras informações no prompt do Bash
Por padrão, ele não faz nada.
Se você nunca precisar usá debian_chroot
-lo, é um local útil para definir a hora em que o prompt de comando foi exibido usando:
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Digite isso no seu terminal e observe seu prompt de comando mudar com o tempo:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Depois que o tempo é definido uma vez, para obter um relógio de corrida que atualiza a cada segundo uso:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &