${debian_chroot:-} 为什么要费心使用 :-?

${debian_chroot:-} 为什么要费心使用 :-?
  1. .bashrc 和 bash.bashrc 包括:

    [ -z "${debian_chroot:-}" ]
    
  2. Bash 手册页对以下形式的参数扩展进行了说明:${parameter:-word}

    如果参数未设置或为空,则替换单词的扩展。否则,替换参数的值

  3. 为什么要写

    "${debian_chroot:-}"
    

    而不仅仅是

    "${debian_chroot}"
    

我的答案是:https://www.reddit.com/r/Ubuntu/comments/3xb9sp/debian_chroot_why_bother_with/

答案1

您提到的部分出现在 的前面.bashrc,而副本中提到的部分出现在 的后面一点PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '。但它们是一起起作用的!

那么你提到的代码用简单的英语来说是什么意思呢?这里供参考。

if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

它从这部分开始${debian_chroot:-}。我们是否debian_chroot设置了该变量?如果是,则回显该变量,但如果没有 - 回显后面的内容-。后面是什么-?什么都没有!就是这样!为什么要费心呢?如果设置了变量怎么办?那么我们不需要执行 if 语句的主体,只需使用debian_chroot变量照原样稍后在 PS1 提示符内。还记得我说过这两段代码一起工作吗?好的,继续。

下一步,如果我们评估变量为空,我们检查是否存在可读/etc/debian_chroot文件。至少在 Ubuntu 14.04 上,没有/etc/debian_chroot文件。因此,每当您启动 bash 时,它都会显示“哦,所以 debian_chroot 未设置,我们在那里没有该文件...好的,只在提示符内保留 \u@\h:\w\$!”

如果我们确实有该文件会发生什么情况?

xieerqi:
$ sudo vi /etc/debian_chroot
[sudo] password for xieerqi: 

xieerqi:
$ bash
(HELLOWORLD)xieerqi@eagle:~$ echo $debian_chroot
HELLOWORLD
(HELLOWORLD)xieerqi@eagle:~$ 

好的,再次跟踪代码:我们有debian_chrootset 吗?没有。我们有那个/etc/debian_chroot文件吗?是的,所以取出它的内容,并将它们推入此用户PS1提示符中。看起来这正是我的输出中发生的事情,对吗?

相关内容