问题描述

在我的.bashrc文件中的终端提示定义中,除此之外,我还有以下代码片段:

${debian_chroot:+($debian_chroot)}

这是做什么的,我需要它吗?

最佳解决方案

回答这个问题的重要部分是/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/中,您可以在/srv/nfs4/netboot/etc/debian_chroot中设置此chroot的名称(在我的情况下,它是一个nfs4 pxe netboot驱动器):

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"

----

|

------------------

|

V

(test)radu@Radu:~$ var=""

radu@Radu:~$ var="and so on"

(and so on)radu@Radu:~$

第三种解决方案

如果环境变量$debian_chroot存在且不为空,则${debian_chroot:+($debian_chroot)}被($debian_chroot)(即其周围的parens的$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提示中包含一些其他信息

默认情况下,它不执行任何操作。

参考资料

mysql chroot debian_在我的终端提示中“${debian_chroot:+($debian_chroot)}”有什么作用?...相关推荐

  1. mac 终端提示_有用的终端提示

    mac 终端提示 A while ago I started a thread on Twitter with a few terminal tips. There are lots of comma ...

  2. linux mysql 命令行查询 乱码_mysql命令提示行连接乱码的解决

    解决MySQL命令行无法连接问题错误ERROR1045(28000) 问题现象: 用navicat可以连接数据库 通过命令行mysql -uroot -p 输入密码后提示"ERROR 104 ...

  3. pycharm终端提示无法加载文件 F:\Users\Administrator\PycharmProjects\pythonProject\venv\Scripts\activate.ps1,因为在

    pycharm终端提示如下,该怎么办呢? 首先,在终端输入get-executionpolicy,回车后可以看到Restricted 然后找到windows上的Windows Powershall以管 ...

  4. 改变ubuntu终端显示语言(桌面系统是中文,终端提示是英文)

    一,永久有效: 1.打开终端:     vi .bashrc 2.最后添加: if [ "$TERM"="linux" ] ;then export LANGU ...

  5. 运行mysql-front出现下面的错误提示:The evaluation time of this program has expired!

    运行mysql-front出现下面的错误提示:The evaluation time of this program has expired! The program will run in Lite ...

  6. anybackup mysql_AnyBackup-Linux MySQL 云容灾失败,执行输出提示错误:Master 端未开启 MySQL BinLog,请开启 BinLog 后重新发起任务...

    关键字 MySQL BinLog 适用产品 AnyBackup 6.0.x 问题描述 执行 MySQL 云容灾失败,执行输出提示错误,点击查看详情显示下列错误信息: MySQL 容灾任务出现异常.(错 ...

  7. 去掉ubuntu终端提示音

    去掉ubuntu终端提示音 sudo vim /etc/inputrc 找到#set bell-style none这一行,去掉前面的注释符号.

  8. Win7怎么通过任务管理器查看进程PID标识符MySQL安装时出现端口异常,提示The specified port already in usemysql error:Access deni

    目录 Win7怎么通过任务管理器查看进程PID标识符 MySQL安装时出现端口异常,提示The specified port already in use mysql error:Access den ...

  9. Wampserver集成Mysql更改密码后无法登陆,提示(HY000/1045)解决方案

    Wampserver集成Mysql更改密码后无法登陆,提示(HY000/1045)解决方案 因为需架设php商城Ecshop,所以作者本着放弃小皮(XP)PHP套件,挑战自我转战Wampserver, ...

最新文章

  1. simple c语言,C语言——指针(simple).ppt
  2. Spinnaker:云原生多云环境持续部署的未来这样玩!
  3. arm linux 64位,微软准备让Linux作为64位ARM Hyper-V客户机运行
  4. 这个用Java写的开源音乐播放器,我粉了
  5. c语言选课系统课程设计,用C语言写一个 学生选课系统
  6. 工业用微型计算机笔记(14)-指令系统(9)
  7. 编写一个项目开发文档
  8. 腾云驾雾了解Windows10和微软私有云
  9. html5 css 字体加粗,HTML和CSS实现字体加粗的三种方法
  10. 微信小程序各种弹窗操作
  11. 微调电位器命名规则_电位器
  12. Hélène Rollès (伊梦莲) 六张专辑收藏 by Emerald 绿色学院 - Green Institute
  13. javaweb——jsp(jsp的本质是什么、jsp九大内置对象、四个域对象、jsp的主要作用)
  14. 聊聊前端开发日常的协作工具(全)
  15. CF115B Lawnmower
  16. 软件测试之linux——自动化
  17. 记录video-js出现的一些异常
  18. Excel插件获取单元格批注以及设置批注
  19. 全国高校计算机能力挑战赛C语言编程题 第四题
  20. 做好5步操作,轻松写出一篇价值10万的软文

热门文章

  1. Microsoft Teams管理(一)
  2. linux tar源码,linux之tar命令备份
  3. Fleck实现简单的Websocket
  4. UEditor(集成 135 编辑器插件)(附源码)
  5. Animated详解
  6. python滑块验证(打码)+pillow裁剪图片
  7. 不懂精简指令集还敢说自己是程序员?
  8. 用不可描述的图片做可以描述的事情
  9. 加载glove-840B-300d.txt出现ValueError
  10. Java13都要来了,你还不了解Java8的新(旧)特性?