在知乎上看到这个问题,有人写了方法,但不详尽,我正好也遇到了这个问题,补充一下吧。以下内容有点长哦,但对于开发者值得了解一下。
不知道什么时候,我的终端里面,$符号前面的名称变成了一个不太相称的名字:
就是$符号前面的那个名称。这个截图是别人的,大概是这个意思,我原来的名称不是这个。
"这个名字太难看了,我想把它修改成一个简洁的名字。"
查了一下文档,知乎上 @Hermite Bai 提到,要在.bashrc 或者.bash_profile 文件中,修改 PS1。我知道这两个文件都是脚本配置文件,但是 PS1 是什么鬼?
我在/etc/bashrc 文件中,终于找到了 PS1 系统变量的存在:
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
"那么,PS1 到底是什么鬼?"
查到这篇文章内容( blog.csdn.net/ethanzhao ),有人说:
PS1 就是进入终端时,前面显示的一段以$结尾的字符,新电脑默认的名称是“登陆名@主机名”。
好吧,回到上面的 bash 代码,再看看它干了什么事。
其中 if... fi,这是 bash 脚本语法的 if 语句,fi 与 if 相反,代表完满结束了。-z "$PS1",这句代码代表查看 PS1 这个系统变量是否存在,如果存在,return 返回。
那么-z是什么呢?
“-z 是一个单目操作符,代表对变量为空不为空的判断”
语法是这样的:
-z $A:为空则为真,不空则为假
从这点看,前面知乎大哥说得没错。只要在.bashrc 或者.bash_profile 文件中,定义了 PS1 变量,就不会再执行下面的逻辑了。
在我的文件里,没有定义,那么这个名称是怎么形成的呢?
它其实执行了下面这行逻辑:
PS1='\h:\W \u\$ '
bash 脚本与众不同,字符串里面可以放置变量。在这个字符串里,只有最后面的"$"符号,还有中间的“:”,是一个字符,其它的都是变量,都有特殊的含义。
其中\h,在这里是 hostname 的简写,代表仅取主机名称中的第一个名字,主面名可以是两段式,例如 liyi.macOS,那么这个小 h 就代表 liyi。对比小 h,还有一个大 H,它的含义你可能猜到了,不说了。
\W 又代表什么呢?
是工作目录名称的最后路径中的一段,如果是\w,则代表完整的工作目录名称。用户目录会以 ~代替。
哦,我们经常会到终端中看到波浪符号。这里面大小的含义与 h 不同,没想到是大 W 代表短名称,而小 w 代表全名称。
最后面一个 u 代表是 username,是当前用户的用户名,这个名称可以在系统设置里,使用另外一个管理员帐号修改它。
所以我的终端前缀,在修改后,是这个样子的:
LiyiLocal:~ ning$
这个名称就来源于上面的代码拼接。
PS1='\h:\W \u\$ '
如果要保留这个格式,还有一个简便的工具可以使用:scutil。
这个工具名疑是 Store Access Util 的简称。它提到了对 ComputerName, LocalHostName, HostName 系统变量的修改办法。
sudo scutil --set HostName LIYI
sudo scutil --set LocalHostName LIYI
这两行代码你看出来了,它代表修改 HostName 与 LocalHostName。
但是,HostName 与 LocalHostName 又代表什么意思呢?
一个是主机名,一个是本地主机名。至于有什么区别,不知道。同是在本地,又不是在服务器上,有什么分别呢。一般就是将它们设置成同样的名称。
ComputerName 是计算机名称,这个名称在隔空传送时是有用的,我们依靠它判断传递对象。如果把不该发的文件,发给不该收的人就尴尬了,毕竟隔空不像微信,没有撤回功能啊。
对于我来讲,我是一个人使用本电脑,所以用户名我觉得可以省了。所以,我直接在/etc/bashrc 中将 PS1 的定义修改为了:
PS1='\h:\W$ '
所以最终我的终端效果是这样的:
LIYI:~$
对了,如果你修改了/etc/bashrc 脚本,不需要重启终端,只需要执行:
source /etc/bashrc
就可以了。所有脚本都是这样。
以上内容有什么价值呢,现在总结一下吧:
了解了 scutil 工具是干什么用的,可以用它简单方便地修改本地一干名称,不必打开系统设置麻烦地修改了,一个脚本就可以搞定了。了解了脚本的 if 语句,原来使用方括号[]+冒号;,来定义条件,分隔符不是花括号,而是 if、then 与 fi,像 VB 一样很奇怪的语法名称哦。对脚本文件是不是有一些了解了呢,/etc/bashrc、etc/profile、~/.bashrc、~/.bash_profile 这些都是配置文件,前两个是系统的,后两个是当前用户的,搞机器配置的时候,尤其在 Linux 服务器上,经常要与它们打交道。还有波浪符号~,它代表用户主目录。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有