问题产生环境
问题出现在学习《第4章 Vim编辑器与Shell命令脚本》配置网卡信息的过程中,具体产生原因当时没有注意。
产生原因及解决办法
方法一
将PS1='[\u@\h \W]$ '写入配置文件.bashrc中。然后重新使能该文件。
# PS1='[\u@\h \W]$ ' >> .bashrc
# source .bashrc
原因分析
上述操作奏效的话,说明出现这个问题的原因可能是.bashrc文件被破坏,导致里面没有该有的内容。
而我们添加的内容PS1='[\u@\h \W]$ ' 就是添加系统变量PS1来定义Linux系统提示符。
一般系统默认的用户提示符形式是:[username@host 工作目录]$。
用命令echo $PS1 即可以得到PS1的值:[\u@\h \W]\$。就是我们添加到配置文件中的值。
方法二
通过cp命令将.bash_profile文件和.bashrc文件拷贝到/root目录下,然后注销,重新登录即可。
# cp /etc/skel/.bashrc /root/
# cp /etc/skel/.bash_profile /root/
原因分析
重新找这个方法的原因主要是因为采用方法一的方法,的确能够解决我的系统提示符的问题,将系统的提示符还原成了我所熟悉的root@linuxprobe。但是在我每次重新开启虚拟机之后就又恢复原样了。
网上查找说,产生这个问题的原因还可能是root用户在/root下面的几个配置文件丢失,丢失的文件有:.bash_profile、.bashrc。这两个文件是每个用户都必备的文件(不只是root用户)。
拷贝的.bash_profile文件是定义PS1变量的配置文件。利用上述方法一的操作应该只是更改了PS1的显示样式,所以当重启登录系统之后,样式又变成了系统默认的样式了。所以想要彻底改变系统默认的样式,就要在PS1的配置文件中操作了。
Tips
- ~/.bash_profile:用来设置一些环境变量,对当前用户有效。当前用户登录时,执行(仅一次)。
- ~/.bashrc:用来设置bash shell相关的东西,对当前用户有效。当登录及每次打开新的shell时,被读取。
- /etc/bashrc:设置系统bash shell相关的东西,对系统内所有用户有效。当bash shell 被打开时,该文件被读取。
- /etc/profile:用来设置系统环境参数,对系统内所有用户生效。当用户第一次登录时,该文件被执行。
- PS(Prompt Sign)命令提示符,PS1 用户平时的提示符。
- 可以通过设置PS1变量使提示符变成彩色。
- 默认的PS1="[\u@\h \W]\$",其中\W就是路径的设置选项,大写的W是简介模式,小写的w为全路径模式。
- Shell 是一种解释器,它可以为用户接受命令,并运行命令来执行诸如在文件系统中导航、运行程序以及与设备交互等操作。
- What Is the Bashrc File Used For?