前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何修改终端中$符号前面的一串名称?

如何修改终端中$符号前面的一串名称?

作者头像
LIYI
发布于 2020-07-22 06:43:34
发布于 2020-07-22 06:43:34
2.5K00
代码可运行
举报
文章被收录于专栏:艺述论专栏艺述论专栏
运行总次数:0
代码可运行

在知乎上看到这个问题,有人写了方法,但不详尽,我正好也遇到了这个问题,补充一下吧。以下内容有点长哦,但对于开发者值得了解一下。

不知道什么时候,我的终端里面,$符号前面的名称变成了一个不太相称的名字:

就是$符号前面的那个名称。这个截图是别人的,大概是这个意思,我原来的名称不是这个。

"这个名字太难看了,我想把它修改成一个简洁的名字。"

查了一下文档,知乎上 @Hermite Bai 提到,要在.bashrc 或者.bash_profile 文件中,修改 PS1。我知道这两个文件都是脚本配置文件,但是 PS1 是什么鬼?

我在/etc/bashrc 文件中,终于找到了 PS1 系统变量的存在:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 是一个单目操作符,代表对变量为空不为空的判断”

语法是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-z $A:为空则为真,不空则为假

从这点看,前面知乎大哥说得没错。只要在.bashrc 或者.bash_profile 文件中,定义了 PS1 变量,就不会再执行下面的逻辑了。

在我的文件里,没有定义,那么这个名称是怎么形成的呢?

它其实执行了下面这行逻辑:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PS1='\h:\W \u\$ '

bash 脚本与众不同,字符串里面可以放置变量。在这个字符串里,只有最后面的"$"符号,还有中间的“:”,是一个字符,其它的都是变量,都有特殊的含义。

其中\h,在这里是 hostname 的简写,代表仅取主机名称中的第一个名字,主面名可以是两段式,例如 liyi.macOS,那么这个小 h 就代表 liyi。对比小 h,还有一个大 H,它的含义你可能猜到了,不说了。

\W 又代表什么呢?

是工作目录名称的最后路径中的一段,如果是\w,则代表完整的工作目录名称。用户目录会以 ~代替。

哦,我们经常会到终端中看到波浪符号。这里面大小的含义与 h 不同,没想到是大 W 代表短名称,而小 w 代表全名称。

最后面一个 u 代表是 username,是当前用户的用户名,这个名称可以在系统设置里,使用另外一个管理员帐号修改它。

所以我的终端前缀,在修改后,是这个样子的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LiyiLocal:~ ning$

这个名称就来源于上面的代码拼接。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PS1='\h:\W \u\$ '

如果要保留这个格式,还有一个简便的工具可以使用:scutil。

这个工具名疑是 Store Access Util 的简称。它提到了对 ComputerName, LocalHostName, HostName 系统变量的修改办法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo scutil --set HostName LIYI
sudo scutil --set LocalHostName LIYI

这两行代码你看出来了,它代表修改 HostName 与 LocalHostName。

但是,HostName 与 LocalHostName 又代表什么意思呢?

一个是主机名,一个是本地主机名。至于有什么区别,不知道。同是在本地,又不是在服务器上,有什么分别呢。一般就是将它们设置成同样的名称。

ComputerName 是计算机名称,这个名称在隔空传送时是有用的,我们依靠它判断传递对象。如果把不该发的文件,发给不该收的人就尴尬了,毕竟隔空不像微信,没有撤回功能啊。

对于我来讲,我是一个人使用本电脑,所以用户名我觉得可以省了。所以,我直接在/etc/bashrc 中将 PS1 的定义修改为了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PS1='\h:\W$ '

所以最终我的终端效果是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LIYI:~$

对了,如果你修改了/etc/bashrc 脚本,不需要重启终端,只需要执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /etc/bashrc

就可以了。所有脚本都是这样。

以上内容有什么价值呢,现在总结一下吧:

了解了 scutil 工具是干什么用的,可以用它简单方便地修改本地一干名称,不必打开系统设置麻烦地修改了,一个脚本就可以搞定了。了解了脚本的 if 语句,原来使用方括号[]+冒号;,来定义条件,分隔符不是花括号,而是 if、then 与 fi,像 VB 一样很奇怪的语法名称哦。对脚本文件是不是有一些了解了呢,/etc/bashrc、etc/profile、~/.bashrc、~/.bash_profile 这些都是配置文件,前两个是系统的,后两个是当前用户的,搞机器配置的时候,尤其在 Linux 服务器上,经常要与它们打交道。还有波浪符号~,它代表用户主目录。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 艺述论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
linux系统终端命令提示符设置(PS1)记录
PS(Prompt Sign)指的是命令提示符,在日常运维工作中为了方面操作管理,有时会设定PS1环境变量。 废话不多说,下面开始记录下Linux中PS1设置 在/etc/.bashrc中,找到PS1变量的定义,如果没有,手动加上: 可以将显示输出到标题栏上: [root@elk-node1 ~]# vim /root/.bashrc ........... export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\]" [root@elk-node1 ~]# sour
洗尽了浮华
2018/01/23
4.6K0
如何调教你的终端提示符?
有必要对里面的一些信息进行解释。例如[\033[01;32m]中,01为前景色,32为背景色,颜色代码如下:
编程珠玑
2020/03/31
1.1K0
如何调教你的终端提示符?
linux学习第二十四篇:管道符和作业控制,shell变量,环境变量配置文件
vmstat 1 自动显示系统的状态 sleep 100 可以使系统沉睡100秒 管道符和作业控制 管道符的作用:把管道符前面执行的结果输出内容交给管道符后面的命令。 查看1.txt的内容并输出给wc -l命令统计行数: cat 1.txt |wc -l 查看1.txt的内容并输出给grep命令查询关键词’aaa’: cat 1.txt |grep ‘aaa’ 暂停一个任务,比如用vim正在编辑一个文件,可以暂停到命令界面做别的事情,vim编辑的文件则暂停在后台里: ctrl z 把任务调
用户1215343
2018/02/05
8330
linux学习第二十四篇:管道符和作业控制,shell变量,环境变量配置文件
Linux 小记 — Ubuntu 自动化配置
前言 工欲善其事,必先利其器。经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本。服务器实例:ubuntu 16.04,技术栈:shell,pytho
捷义
2018/05/14
1.3K0
Linux 环境变量配置全攻略
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。
程序员白楠楠
2020/11/22
1.3K0
Shell编程学习笔记
常用命令介绍 历史命令(History) history:查看历史命令,默认1k条 !!:上一条命令 !$:获取上一条命令的最后一个参数 !+数字:运行第几条历史命令 !+字符串:从历史命令最近一条开始匹配,以该字符串开头的命令 别名(alias) 列出所有的别名设置:alias 设置别名:alias a=’b’ 取消别名设置:unalias a 重定向 重定向符号 重定向,覆盖原来的内容:> 重定向,追加到原来的内容:>> 反向重定向,目标是一个程序:< 错误重定向,覆盖原来的内容:2> 错误重定向,追
skyyws
2022/05/20
5290
一文带你学会Linux系统的环境变量
由于 Linux 命令行没有图形化界面,因此,所有的设置都采用文本的方式来完成,而其中最重要的用户设置则为 bashrc 文件,bashrc 配置文件非常重要,相当于图形化界面的设置选项。很多时候,命令找不到,缺少 XXX,都可能与这个有关。如果 bashrc 修改错误,会造成严重的影响。下面系统来介绍一下 bashrc 文件。
生信喵实验柴
2021/12/15
9600
一文带你学会Linux系统的环境变量
管道符和作业控制,shell变量,环境变量配置
  我们知道PATH是系统内置变量,还有HOME、PWD、LOGNAME等变量,这些变量是在系统里的配置文件规定的,env命令可以获取到系统变量,系统的变量一般都是大写的,变量的值则可以是字符串或数字:
端碗吹水
2020/09/23
1.3K0
管道符和作业控制,shell变量,环境变量配置
bash和shell的入门中
里面默认有三行,较有趣的地方在于 r 与 m。 就 如同 $PS1 这变量一样,issue 这个文件的内容也是可以使用反斜杠作为变量取用!你可以 man issue 配合 man agetty 得到底下的结果:
小柒吃地瓜
2020/04/23
9700
linux基础(day24)
8.6 管道符和作业控制 管道符、作业控制 ctrl z //暂停一个任务 jobs //查看后台的任务 bg [id] //把任务调到后台 fg [id] //把任务调到前台 命令后面加&直接丢到后台 管道符的使用 管道符 | ,表示把前面命令输出的结果,传输给后面的命令 cat 1.txt |wc -l ;cat 1.txt |grep 'aaa' grep 命令,用来过滤指定关键词的命令,只要在一行中含有这个关键词,就会把这一行过滤出来 wc -l 命令,查看文件有多少个 [root@loca
运维小白
2022/01/06
5450
Linux 目录结构及详细操作
目录 Linux 目录结构及详细操作 目录结构 目录结构的特点 目录结构挂载 目录结构发展 关闭selinux(了解) 重要目录说明(etc目录说明) 1、网卡配置文件 2、解析配置文件 3、主机名称文件 4、解析映射文件 5、磁盘挂载文件 6、开机加载脚本 7、系统启动级别 8、变量加载文件(环境变量) 9、登录提示文件 重要目录说明(/usr目录说明) 重要目录说明(/var目录说明) 重要目录说明(/proc目录说明) 补充知识: Linux 目录结构及详细操作 目录结构 常见的目录结构
HammerZe
2022/03/25
6890
Linux 目录结构及详细操作
终端terminal个性化配置[通俗易懂]
http://blog.csdn.net/pipisorry/article/details/39584489
全栈程序员站长
2022/09/14
4.4K0
终端terminal个性化配置[通俗易懂]
8.9 环境变量配置文件
环境变量配置文件目录概要 /etc/profile 用户环境变量,交互,登录才执行 /etc/bashrc 用户不能登录,执行shell就生效 ~/.bashrc ~/.bash_history ~/.bash_logout PS1='[\033[01;32m]\u@\h[\033[00m]:[\033[01;36m]\w[\033[00m]$ ' //带颜色显示命令行左边 系统的环境变量配置文件 两个纬度,一个是系统层次,一个是用户层次 系统层次,就是/etc 下的文件 用户层次,就是用户家目录下的
运维小白
2022/01/06
4070
关于Linux环境变量
最近在配置开发环境,遇到了很多不懂的问题。主要还是linux操作系统相关的,分享给宝宝们!一提到环境配置就不得不说环境变量,so,今天的主题是环境变量。
用户3258338
2019/07/19
4.5K0
关于Linux环境变量
Linux环境变量说明与配置
  /etc/profile     范围:对所有用户生效     作用:       a.定义USER变量       b.定义LOGNAME变量       c.定义MAIL变量       d.定义PATH变量       e.定义HOSTNAME变量       f.定义HISTSIZE变量       g.定义umask值       i.调用/etc/profile.d/*.sh文件   /etc/profile.d/*.sh     范围:对所有用户生效     说明:这是一族sh文件,没个都会被调用     例如:       /etc/profile.d/lang.sh       作用:调用/etc/sysconfg/i18n设置语言环境   ~/.bash_profile     范围:用户自己的家目录,对自己生效     作用:       a.调用 ~/.bashrc文件       b.在PATH变量后加入了":$HOME/bin"这个目录   ~/.bashrc     范围:用户自己的家目录,对自己生效     作用:       a.定义alias别名       b.调用/etc/bashrc   /etc/bashrc     范围:对所有用户生效     作用:       a.定义PS1变量(登录以后的提示符样式)       b.如果是无密码登录,则         定义umask值         定义PATH变量         调用/etc/profile.d/*.sh文件
Lansonli
2021/10/09
1K0
Mac终端主题文字修改
链接:https://github.com/altercation/solarized
SL_World
2022/05/06
1.9K0
Mac终端主题文字修改
Shell 编程(3)-bash 配置文件
用户登录系统时,bash 会进行一系列操作,如加载各种 bash 配置文件,设置或清空一些列的变量,有时还会执行一些自定义的命令。
懒人的小脑
2019/01/26
1.5K0
Shell 编程(3)-bash 配置文件
超详干货!Linux 环境变量配置全攻略
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法。
程序员白楠楠
2020/12/10
1.6K0
Linux登录shell和非登录(交互式shell)环境变量配置
使用Jenkins执行shell脚本的时候, 碰到command not found. 比如java mvn, 这些环境变量配置在/etc/profile 中, 但jenkins执行的时候并没有加载.
Ryan-Miao
2020/05/19
2.8K0
定制你的 Linux:精彩 Shell 提示符设置技巧
在操作 Linux 系统时,我们最常接触的就是终端界面。其中,Shell 提示符(也称命令行提示符)作为用户与系统交互的第一道门户,拥有极高的可定制性。今天,我们就来探索如何设置并优化你的 Shell 提示符,让你的命令行界面更加符合你的个性和需求。
运维开发王义杰
2023/08/10
1.1K0
定制你的 Linux:精彩 Shell 提示符设置技巧
相关推荐
linux系统终端命令提示符设置(PS1)记录
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文