+
80
-

/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc的区别是什么?

请问linux中/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc的区别是什么?

网友回复

+
0
-

都是设置环境变量,有一些不同

/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.

~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.

1)修改/etc/profile文件

推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,缺点是可能会给系统带来安全性问题。 这里是针对所有的用户的,所有的shell; [root@test ~]# vim /etc/profile .... export PATH=$PATH:/usr/local/mysql/bin 使用source命令使修改立刻生效: 

[root@test ~]# source /etc/profile 2)修改.bashrc文件,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一个特定的用户,如果需要给某个用户权限

使用这些环境变量,只需要修改其个人用户主目录下的.bashrc文件就可以了。

[root@test ~]# vim /root/.bashrc

export PATH=$PATH:/usr/local/mysql/bin [root@test ~]# source /root/.bashrc

下面是几个例子: 1. 图形模式登录时,顺序读取:/etc/profile和~/.profile 2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc 3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile 4. 从其它用户su到该用户,则分两种情况: (1)如果带-l参数(或-参数,–login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。 (2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc 5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout 6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。

我知道答案,我要回答