对修改提示符引起的一些问题的理解

有一个练习:提示符修改过后永久保存,每次打开一个新的shell,提示符都为已设定好的格式,不会因为打开新的shell而不同。

在做这个练习的时候遇到了不少问题,通过不断bing,将起初很陌生的问题一点点的解决,得到了一些理解,因此将理解写下来。

提示符与变量PS1有关,PS1的值可以被修改或重新赋予。PS1的值变,则提示符也会变。通过搜索得到只要在/etc/bashrc中添加一句PS1=XXXXX就可以解决这个问题,其中XXXXX是一串符合PS1格式的值。可为什么在bashrc中添加一句话就将问题解决了?

要想PS1的值产生作用,那肯定是在打开shell时,系统已经执行过某些文件,然后执行过PS1重新赋值的那条语句。在这要先说下什么是shell,它有几种,这几种的区别。

shell是什么?比较专业抽象的解释我就不说了,我直接举些实例。当你打开电脑,来到linux的图形化桌面的时候,其实你已经接触到一个shell,这个图形化的操作环境就是一个shell。然后在桌面右键,进入一个终端,而这个终端也是一个shell。然后,shell有两种:login shell和non-login shell。login shell是需要用户名、密码登录后才能进入的shell(或者通过”–login”选项生成的shell);而non-login shell则是不需要密码和账号的。从执行文件的顺序的角度来讲这两者的区别:

在进入login shell时,系统自动执行的文件及顺序:/etc/profile >
/etc/profile.d > ~/.bash_profile > ~/.bashrc > /etc/bashrc。   

在进入non-login shell时,系统自动执行的文件及顺序:~/.bashrc > /etc/bashrc
> /etc/profile.d。

因此到这里,可以解释为什么要在/etc/bashrc下给PS1赋值。无论是以什么方式打开shell,都必然要执行/etc/bashrc,那么就会执行PS1重新赋值的语句,也就会得到想要的提示符。

那/etc/bashrc和~/.bashrc有什么区别? “~”表示的是家目录,比如root用户,他的家目录为/root,那么“~”就等于/root。隐藏文件一般带有“.”。不同的用户有不同的家目录,就有不同的.bashrc。那么系统根据不同的登录用户就会执行不同的.bashrc,给予用户对应的使用习惯。而/etc下的文件设置的内容是全部用户都相同的。因此如果是在/etc/bashrc对PS1赋值,就会对全部登录这个系统的用户有效;如果是在~/.bashrc下对PS1赋值,就会只和对应的用户有效,而这用户的提示符就会和别的用户不同。

/etc/profile和/etc/bashrc有什么区别,它们一般有什么作用?profile是某个用户唯一的用来设置环境变量的地方,因为用户可以有多个 shell 比如 bash, sh, zsh 之类的,但像环境变量这种其实只需要在统一的一个地方初始化就可以了,而这就是 profile。bashrc是专门用来给 bash 做初始化的,比如用来初始化 bash 的设置,bash 的代码补全,bash 的别名,bash 的颜色。以此类推也就还会有 shrc, zshrc 这样的文件存在。

 

原创文章,作者:Eminem,如若转载,请注明出处:http://www.178linux.com/81012

赞 (0)
EminemEminem
上一篇 2017-07-15 17:39
下一篇 2017-07-15 19:12

相关推荐

  • Linux入门基础知识

    1、计算机的组成及其功能。         计算机系统主要分为硬件系统和软件系统两部分。         (1)硬件系统由五部分组成,其中包括:         控制器:调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问;         运算器:对数据进行加工处理;         存储器:存储程序、信号、命令,数据等信息,并在需要时提供这些信息…

    Linux干货 2018-02-25
  • 使用haproxy代理LAMP、LNMP 实现WordPress发布

    haproxy简介 HAProxy是专业的反向代理软件,它可以支持4层和7层代理服务。其配置包含一下几个配置段: global:全局设置,通常与操作系统有关 defaults:配置默认参数,可以被frontend、backend、listen组件利用 frontend:接收亲请求的前虚拟节点 backend:后端服务集群的配置,一个backend可以对应多个…

    2017-05-17
  • Linux命令小总结

                     随着对Linux学习的深入,Linux命令也越来越多的。虽然我们可以通过man等帮助查询我 忘记的命令,但写脚本本质是由命令有序的堆砌而运行的。下面让我来总结一番我们学习过的命令 &nb…

    2017-07-30
  • vim编辑以及脚本编程练习

    vim编辑器的使用总结: vim在工作过程当中有三种模式:编辑模式、输入模式、末行模式。 1、编辑模式:即命令模式,键盘操作常被理解为编辑命令; 2、输入模式:在文本文件当中进行输入内容; 3、末行模式:vim内置的命令行接口,执行vim的内置命令。   vim的使用 打开文件 #vim[option]…[FILE] +#:打开文件后,直接让光标处…

    Linux干货 2017-10-29
  • 网络知识

    网络知识 一、网络初识 1.网络概念  在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。 2.分类 按覆盖范围分: 局域网LAN(作用范围一般为几米到几十公里)。 城域网MAN(界于WAN与LAN之间)。 广域网WAN(作用范围一般为几十到几千公里)。 按拓扑结构分类: 总线型 …

    Linux干货 2016-09-01