【理解系统】bash启动文件以及自定义命令提示符

一、bash类型

当我们每次进入Linux系统时,总能使用到例如ll之类的一些命令,这些命令并非bin目录下的可执行文件,而是Linux发行版为我们预置的alias。那么Linux发行版究竟是什么时候又是如何为我们配置的这些东西呢?想要直到这个问题,需要先来了解一下bash的几种类型

  1. 登陆式bash:所谓的登录式bash就是当用户以登录的方式启动的bash,例如ssh远程登录,在命令行输入bash -l命令启动一个登录式child bash或者进入一个docker容器docker exec -it ${container_id} bash -l,注:这个登录的用户是dockerfile中定义的USER,如果没定义默认是root
  2. 非登录式bash:与第一种相反,出现的场景有:在命令行输入bash命令启动一个非登陆式child bash或者进入容器docker exec -it ${container_id} bash
  3. 非交互式bash:这种出现的情况只有一种那就是执行shell脚本。

二、bash启动文件

针对不同的bash类型,Linux会通过不同的配置文件对其进行启动配置,并且这些文件名称都是固定的,Linux会默认去执行这些文件。

登录式bash首先会读取全局配置文件/etc/profile,然后会依次寻找几个文件$HOME/.bash_profile, $HOME/.bash_login, $HOME/.profile,找到第一个文件就会执行,余下的则会被忽略。全局配置文件不论你是哪个用户登录都会执行,所以很多常用的别名都会在此配置,家目录下的配置文件更加偏向用户个人的习惯。

非登录式bash只会执行家目录下的.bashrc,之所以很多人觉得这两类bash没有区别是因为该文件通常会去调用执行登录式bash的配置文件。

非交互式bash即bash脚本的执行并不会读取任何配置文件,但是由于它是一个child bash所以它会继承父bash的全局环境变量(通过export配置的),但是alias是继承不了的。

/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc
登录式bash√(当前一个配置文件不存在时)√(当前两个配置文件不存在时)×
非登录式bash××××
非交互式bash×××××

三、自定义命令提示符

我们登陆不同发行版的Linux电脑会发现它们默认的命令提示符都不太相同。那么这个究竟是在哪里配置的呢?其实这个配置是通过一个叫做PS1的环境变量设置的。然后最终的显示是由我们的终端读取该变量进行渲染的。

下面先来看看我的配置,然后看下它是如何在终端渲染的:
export PS1='\[\e[36;1m\][\u@\h]\[\e[0m\] \W\$ '

显示效果:
PS1
这个PS1环境变量配置我是设置在$HOME/.bash_profile中,当然如果你想让所有的用户都实现这个效果也可以设置在全局启动文件(/etc/profile)中,不过一般这个是用户个人习惯,最好不要污染全局文件。

这个配置的含义是:\[\e[36;1m\]代表后面文本是青蓝色(36)并且加粗(1m)显示,[\u@\h]代表了某个用户在哪个主机(也就是[hch@instance-mfw2qss3]),\[\e[0m\]代表了后面的文本没有字体颜色和特效。\W代表了当前所在路径的最后一个目录名

bash支持的颜色特效如下表所示,使用方式为\[\e[字体颜色;背景颜色;字体特效m\],这三者的顺序不做强制要求,不填的话就按照默认效果显示。

附1:字体颜色码

字体颜色码对应颜色
30黑色字体
31红色字体
32绿色字体
33黄色字体
34蓝色字体
35洋红字体
36青色字体
37白色字体

附2:背景颜色码

背景颜色码对应颜色
40黑色背景
41红色背景
42绿色背景
43黄色背景
44蓝色背景
45洋红背景
46青色背景
47白色背景

附3:字体特效码

字体特效码对应特效
0无特效
1加粗
4下划线
5闪烁
7反白显示
8不可见

附4:信息参数码

信息参数码含义
\u当前用户,和whoami命令等价
\h主机名,和hostname命令等价
\w当前目录完整的路径名,和pwd命令等价
\W当前目录
\d当前日期,周月日格式例如 “Tue May 26”
\t24小时制的当前时间
\T12小时制的当前时间
\@带am或pm的12小时制当前时间
\j在此shell中通过按 ^Z挂起的进程数
\l此shell的终端设备名 (如"ttyp4")
\s当前使用的shell名,和echo $0等价
\n换行符
\r回车符
\#井号,用于提示符
\$美元符号,用于提示符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值