关于linux下的PS1的设定与PATH的设定

工欲善其事,必先利其器。在使用linux做嵌入式linux移植开发的时候,有两个问题让我很不爽。

1、PS1的设定。即提示字符让我看着很不爽,那么我们如何将其修改成我们想要的样子呢?

2、arm-linux-gcc老是提示找不到,那么我们具体该如何设置将其查找路径有效的,完整的被linux识别呢?

下面我带你看一下

操作系统:ubuntu

以上两个问题其实是同宗同源的,其根本问题就是ubuntu下的环境配置文件。一般我们设置环境变量(这里以修改PS1举例)有两种时间常数,一是临时使用,重新登陆之后上次的操作已经被遗忘;一是长期使用,一次修改终身有效。

对于临时修改我们可以直接给变量赋值就可以完成,这种情况在用户登陆时可以持续有效,但是当用户注销再重新登陆后,则这个操作就失效了,他的生命周期在用户注销时已经结束。

举例:PS1="[/u@/h /W]//$ "

如果我们想一次修改,一生受用,则需要修改文件。具体修改哪个文件呢?我们继续往下看

关于系统环境设置的文件有以下几个:

/etc/environment–>是系统在登录时读取的第一个文件,用于为所有进程设置环境变量。系统使用此文件时并不是执行此文件中的命 令,而是根据KEY=VALUE模式的代码,对KEY赋值以VALUE,因此文件中如果要定义PATH环境变量,只需加入一行形如 PATH=$PATH:/xxx/bin的代码即可。(此文件中只针对PATH进行配置,确实如上文所说,它并不是执行此文件中的命令。上文中用的也是读取这个词,我对于单纯的赋值但是不执行不太理解,不过一般也不会去操作这个文件)

/etc/profile–>是系统登录时执行的第二个文件,可以用于设定针对全系统所有用户的环境变量。(注意它的具有全局性,但是由于它执行性,他会容易被后面的配置文件给覆盖掉一些操作,最典型的就是我们在这个给PATH添加arm-linux-gcc的路径,会被后来的~/.profile覆盖掉)

~/.profile–>是对应当前登录用户的profile文件,用于定制当前用户的个人工作环境。(个人用户及root用户)(但是有个前提是只有当~/.bash_profile和~/.bash_login不存在的时候才会读取~/.profile,不过一般那两个文件都不存在

/etc/bash.bashrc–>是针对所有用户的bash初始化文件,在此中设定的环境变量将应用于所有用户的shell中,此文件会在用户每次打开shell时执行一次。

~/.bashrc–>是对应当前登录用户的bash初始化文件,当用户每次打开shell时,系统都会执行此文件一次。

以上就是常用到的配置文件,那么他们具体的执行关系是怎么呢,分两种情况来讨论:

情况一:login shell:取得bash时需要完整的登入流程的,就称为login shell。举例来说,你要由tty1 ~ tty6登入,需要输入用户的账号与密码,此时取得的bash就称为『login shell

根据鸟哥的linux私房菜中的叙述这些文件的运行顺序如下图中所示。

关于linux下的PS1的设定与PATH的设定_第1张图片

实线的的方向是主线流程,虚线的方向则是被呼叫的配置文件!从上面我们也可以清楚的知道,在CentOSlogin shell 环境下,最终被读取的配置文件是『~/.bashrc』这个文件。所以我们最终的设置结果是以~/.bashrc中设置为准的。有需要设置的直接在~/.bashrc中设置即可。(/etc/bashrc是red hat特有的。我们这里不作说明)

情况二:non-login shell:取得 bash 接口的方法不需要重复登入的举动,举例来说, (1)你以 X window 登入 Linux 后,再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell 了。 (2)你在原本的 bash 环境下再次下达 bash 这个指令,同样的也没有输入账号。密码, 那第二个 bash (子程序) 也是 non-login shell 。

对于情况二,bash配置文件仅会读取~/.bashrc。

没有发现不论是情况一还是情况二,最终都是以~/.bashrc为准,所以我们只需要处理它就好了。但是需要注意的这仅仅是针对我们的单个用户,如果你想在root中也使用相同设置,则需要在/root/.bashrc中同样也设置一下。

好言归正传。本文的开头我们说到了对于arm-linux-gcc路径的问题和PS1设置的问题。同过上面的分析我们知道需要对自定义用户~/.bashrc和/root/.bashrc作处理

针对PATH路径的修改,我们做如下操作(以我自己的电脑为例)

在/root/.bashrc文件最后面添加:export PATH=$PATH:/work/tools/gcc-3.4.5-glibc-2.3.6/bin

在/home/ly/.bashrc(即~/.bashrc)文件最后面添加:export PATH=$PATH:/work/tools/gcc-3.4.5-glibc-2.3.6/bin

对于PS1的配置,需要的参数比较多。具体我在后面列出,怎么配置看你自己的爱好。我们同样还是修改两个文件,/root/.bashrc和/home/ly/.bashrc

我只强调一个地方两个文件需要修改的地方相同,如下所示:

关于linux下的PS1的设定与PATH的设定_第2张图片

代码中有三个修改PS1的地方,如果系统支持颜色,改第一个,如果不支持改第二个,如果是X-windows下,改第三个。如果不知道,那就都改吧

下面简单说说环境下默认的特殊符号所代表的意义: 

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1" 
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux 
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 
\t :显示时间为24小时格式,如:HH:MM:SS 
\T :显示时间为12小时格式 
\A :显示时间为24小时格式:HH:MM 
\u :当前用户的账号名称 
\v :BASH的版本信息 
\w :完整的工作目录名称。家目录会以 ~代替 
\W :利用basename取得工作目录名称,所以只会列出最后一个目录 
\# :下达的第几个命令 
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

/e[开头,m结尾的格式可以定义一种颜色
我们可以通过设置PS1变量使提示符成为彩色。在PS1中设置字符序列颜色的格式为:
\[\e[F;Bm\]
其中``F''为字体颜色,编号30~37;``B''为背景色,编号40~47。
可通过``\e[0m''关闭颜色输出;特别的,当B为1时,将显示加亮加粗的文字,详细请看下面的颜色表与代码表。

颜色表 
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

代码 意义
-------------------------
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反白显示
8 不可见


{debian_chroot:+($debian_chroot)} 这句的意思是说,如果在/etc下有debian_chroot文件,则命令提示符前面就附加上debian_chroot文件的内容。


参考文献:

1、鸟哥的linux私房菜

2、http://blog.sina.com.cn/s/blog_6405313801012pxw.html

3、http://blog.csdn.net/jbgtwang/article/details/7902521

4、http://blog.csdn.net/armeasy/article/details/5932750

5、http://blog.sina.com.cn/s/blog_615770bd0101438m.html

你可能感兴趣的:(linux)