fou*_*ric 119 bash debian prompt chroot bashrc
在我的.bashrc
文件中的终端提示定义中,除其他外,我有以下代码片段:
${debian_chroot:+($debian_chroot)}
Run Code Online (Sandbox Code Playgroud)
这有什么作用,我需要它吗?
cha*_*aos 109
回答这个问题的重要部分是以下片段/etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Run Code Online (Sandbox Code Playgroud)
这意味着如果变量$debian_chroot
为空且文件/etc/debian_chroot
存在且可读,则将变量设置为文件的内容。
现在这是为了什么?该文件/etc/debian_chroot
是当您在另一个 debian 系统(ubuntu 基于 debian)中有一个 chrooted 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
Run Code Online (Sandbox Code Playgroud)
然后当你在里面 chroot 时:
chroot /srv/nfs4/netboot/
Run Code Online (Sandbox Code Playgroud)
您的提示如下所示:
(netboot)user@host:~#
Run Code Online (Sandbox Code Playgroud)
Rad*_*anu 68
一般来说,${var:+value}
意思是:
if $var is defined; then use 'value'; else do nothing
Run Code Online (Sandbox Code Playgroud)
该debian_chroot
变量在定义/etc/bash.bashrc
文件中。/etc/debian_chroot
如果该文件存在且可读,则获取文件的内容。默认情况下,此文件不存在。
有关更多详细信息,请参阅:
现在,为了更好地了解那里到底发生了什么,请在终端中执行以下操作:
radu@Radu:~$
PS1='${var:+($var)}\u@\h:\w\$ '
radu@Radu:~$ var="test"
----
|
------------------
|
伏
(测试)radu@Radu:~$ var=""
radu@Radu:~$ var="等等"
(等等)radu@Radu:~$
Flo*_*sch 21
如果环境变量$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\$ '
Run Code Online (Sandbox Code Playgroud)
顾名思义,您可以使用此变量通过放入etc/debian_chroot
chroot 根文件夹来指示您所在的 chroot。
如果你不知道 chroot 是什么,你可能不需要那个 ;-) 但是你仍然可能会滥用它在你的 Bash 提示中包含一些其他信息
默认情况下它不做任何事情。