在学习中对于.bashrc 文件的相关作用不太了解,故记录
1).bashrc文件概述
在linux系统普通用户目录(cd /home/xxx)或root用户目录(cd /root)下,用指令ls -al
可以看到4个隐藏文件,
- .bash_history 记录之前输入的命令
- .bash_logout 当你退出时执行的命令
- .bash_profile 当你登入shell时执行,只在会话开始时被读取一次
- .bashrc 当你登入shell时执行,每次打开新的终端时,都要被读取。
这些文件是每一位用户对终端功能和属性设置,修改.bashrc可以改变环境变量PATH、别名alias和提示符。具体如何修改会在下面做介绍。
注:除了可以修改用户目录下的.bashrc文件外,还可以修改系统的配置文件:如“/etc/profile”文件、“/etc/bashrc”文件及目录“/etc /profile.d”下的文件。
修改用户目录下的.bashrc则只是限制在用户应用上,属于用户级设置。两者在应用范围上有所区别,建议如需修改的话,修改用户目录下的.bashrc,即无需root权限,也不会影响其他用户。
2)PATH环境变量修改
说明
**PATH变量决定了shell 将到哪些目录中寻找命令或程序。**如果要执行的命令的目录在 $PATH 中,您就不必输入这个命令的完整路径,直接输入命令就可以了。一些第三方软件没有将可执行文件放到 Linux 的标准目录中。因此,将这些非标准的安装目录添加到 $PATH 是一种解决的办法。此外,您也将看到如何处理一般的环境变量。
首先,作为惯例,所有环境变量名都是大写。由于 Linux 区分大小写,这点您要留意。当然,您可以自己定义一些变量,如’ p a t h ′ 、 ′ path'、' path′、′pAtH’,但 shell 不会理睬这些变量。
第二点是变量名有时候以’ ′ 开 头 , 但 有 时 又 不 是 。 当 设 置 一 个 变 量 时 , 直 接 用 名 称 , 而 不 需 要 加 “ '开头,但有时又不是。当设置一个变量时,直接用名称,而不需要加“ ′开头,但有时又不是。当设置一个变量时,直接用名称,而不需要加“”,如
“PATH=/usr/bin:/usr/local/bin:/bin”
假如要获取变量值的话,就要在变量名前加’$’: echo $PATH
则会显示当前设置的PATH变量“/usr/bin:/usr/local/bin:/bin”
否则的话,变量名就会被当作普通文本了:echo PATH” 显示“PATH
处理 $PATH 变量要注意的第三点是:您不能只替换变量,而是要将新的字符串添加到原来的值中。
不能用“PATH=/some /directory”,因为这将删除
P
A
T
H
中
其
他
的
所
有
目
录
,
这
样
您
在
该
终
端
运
行
程
序
时
,
就
不
得
不
给
出
完
整
路
径
。
所
以
,
只
能
作
添
加
:
“
P
A
T
H
=
PATH 中其他的所有目录,这样您在该终端运行程序时,就不得不给出完整路径。所以,只能作添加:“PATH=
PATH中其他的所有目录,这样您在该终端运行程序时,就不得不给出完整路径。所以,只能作添加:“PATH=PATH:/some/directory”,假如你要添加/usr/local/arm/3.4.1/bin交叉编译命令,则操作为“PATH=$PATH:/usr/local/arm/3.4.1/bin”
这样,PATH 被设成当前的值(以 $PATH 来表示)+新添的目录。
到目前为止,你只为当前终端设置了新的 $PATH 变量。如果您打开一个新的终端,运行 echo $PATH ,将显示旧的 $PATH 值,而看不到你刚才添加的新目录。因为你先前定义的是一个局部环境变量(仅限于当前的终端)。
总结
要定义一个全局变量,使在以后打开的终端中生效,您需要将局部变量输出(export),可以用"export"命令:
export PATH=$PATH:/some/directory
为了将目录永久添加到 $PATH ,只要将"export"的那行添加到.bashrc或/etc/bashrc文件中。
3)alias 别名
一般在.bashrc或/etc/bashrc文件里有几句话
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
有了这几句话,当在终端中输入“mv test.c led.c”实际上输入的是“mv -i test.c led.c”,所以说alias是一个别名。你可以在该配置文件中添加自己风格的别名,如“alias ll=‘ls -l’”,只需要在终端中输入“ll”就实现了“ls -l”的功能。还可以添加其他语句,随自己喜好。
4)提示符
说明
当打开一个控制台(console) 时,最先看到的就是提示符(prompt),如:[root@localhost ~]#
在默认设置下,提示符将显示用户名、主机名(默认是’localhost’)、当前所在目录(在 Unix 中,’~‘表示您的 home 目录),最后一个字符可以标识普通用户($),还是’root’(#)。
可以通过 $PS1 变量来设置提示符。命令echo $PS1
,将显示当前的设定。其中可用字符的含义在 man bash 的’PROMPTING’部分有说明。
如何才能完成理想的设置呢?对于健忘的初学者来讲,默认设定有些不友好,因为提示符只显示当前目录的最后一部分。如果你看到象这样的提示符
[wsf@localhost bin]$
则当前目录可能是’/bin’、’/usr/bin’、’/usr/local/bin’及’/usr/X11R6/bin’。
当然,你可以用pwd
(输出当前目录,print working directory),能不能叫 shell 自动告诉你当前目录呢?
当然可以。这里我将提到的设定,包括提示符,大都包含在文件’/etc/bashrc’中。您可以通过编辑各自 home 目录下的’.bash_profile’和’.bashrc’来改变设置。
在 man bash 中的’PROMPTING’部分,对这些参数(parameter)有详细说明。您可以加入一些小玩意,如不同格式的当前时间,命令的历史记录号,甚至不同的颜色。
总结
对于提示符一种更适当的设定:PS1="[\u: \w]\\$"
这样,提示符就变成:[wsf: /usr/bin]$
在.bashrc 中利用export使改动每次都生效
expert PS1="[\u: \w]\\$"
参考:https://www.cnblogs.com/testlife007/p/6548698.html