回答:
この質問に答える重要な部分は、次のスニペットです/etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
変数$debian_chroot
が空でファイル/etc/debian_chroot
が存在し、読み取り可能な場合、変数はファイルのコンテンツに設定されます。
これは何のためですか?このファイル/etc/debian_chroot
は、別のdebianシステム内にchrootされたdebianシステムがある場合です(ubuntuはdebianに基づいています)。したがって、これはより良い概要のためです。chrootにいるかどうかを区別するため。
たとえば、別のシステムのchrootがある場合/srv/nfs4/netboot/
、このchrootの名前を設定できます/srv/nfs4/netboot/etc/debian_chroot
(私の場合はnfs4 pxeネットブートドライブです)。
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
そして、内部でchrootするとき:
chroot /srv/nfs4/netboot/
プロンプトは次のようになります。
(netboot)user@host:~#
一般的に、${var:+value}
意味します:
if $var is defined; then use 'value'; else do nothing
debian_chroot
変数は、で定義され/etc/bash.bashrc
たファイル。/etc/debian_chroot
このファイルが存在し、読み取り可能な場合、ファイルのコンテンツを取得します。デフォルトでは、このファイルは存在しません。
詳細については、以下を参照してください。
そこで、そこで何が起こっているのかをより正確に理解するには、ターミナルで以下を実行します。
radu@Radu:~$
PS1 = '$ {var:+($ var)} \ u @ \ h:\ w \ $'
radu @ Radu:〜$ var = "test"='${var:+($var)}\u@\h:\w\$ '
:~$="test"
--------
||
------------------------------------
||
V
(テスト)radu @ Radu:〜$test)radu@Radu:~$ var = ""
radu @ Radu:〜$ var = "など"
(など)radu @ Radu:〜$=""
:~$="and so on"
and so on)radu@Radu:~$
環境変数$debian_chroot
が存在し、空でない場合${debian_chroot:+($debian_chroot)}
は、($debian_chroot)
($debian_chroot
周囲の括弧付きの値)に置き換えられます。
$debian_chroot
は、そのファイルが存在する場合(デフォルトでは存在しない)/etc/bash.bashrc
のコンテンツに設定され、まだ値を持ちません。/etc/debian_chroot
$debian_chroot
${debian_chroot:+($debian_chroot)}
通常、Bashプロンプトの定義に使用されます。たとえば、
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
名前が示すように、この変数を使用etc/debian_chroot
して、chrootルートフォルダーに配置することで、現在のchrootを示すことができます。
chrootが何であるかわからない場合、それは必要ありません;-)しかし、それを悪用してBashプロンプトに他の情報を含めることもできます。
デフォルトでは何もしません。
使用する必要がない場合は、次を使用しdebian_chroot
てコマンドプロンプトが表示された時間を入力するのに便利です。
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
これを端末に入力し、コマンドプロンプトが時間とともに変化するのを確認します。
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
時間を1回設定した後、1秒ごとに更新される実行クロックを取得するには:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &