linux中.bash_profile 与 .bashrc的区别与应用

2022-10-21 467点热度 0人点赞 0条评论

这两个文件都是在home的用户目录下面,属于用户的特有的环境变量,而/etc/profile则是系统的环境变量,每个用户都可以访问的环境变量

那么.bash_profile 与 .bashrc有什么不同呢?官方有句话:

.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.

也就是说.bash_profile是登录的时候调用的,而 .bashrc是每次交互的时候就会调用

  1. 直接在机器中login时,登录成功后会调用.bash_profile
  2. 如果是ssh或者su用户时,这时会调用.bashrc
  3. 当登录成功后,每次打开一个终端时,这时也会调用.bashrc

当然除了这两个文件,还会有其他的环境变量设置的文件

具体执行顺序为:

/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

(~/.bash_profile | ~/.bash_login | ~/.profile) 表示只会执行其中一个文件,从左往右找,一旦找到不会继续找,如找到了.bash_profile就会不会去找.bash_login和.profile了,

.bash_profile找不到才会找.bash_login,.bash_login找不到才会找.profile

有了上面的执行顺序,我们设计这样一个需求,比如我只想让jdk安装在普通用户test下,而不想被用户test2和root用户使用jdk和执行jdk相关命令

如何设计呢?

我们通常在linux中安装jdk,jdk的环境变量都是设置在/etc/profile中,但是这样的后果就是所有用户都可以执行java命令和运行java项目

如果我只想test用来运行java项目,那么jdk的环境变量只能设置在/home/test/.bash_profile中,根据执行顺序,bash_profile只会执行自己用户目录下的,不能执行其他用户下的bash_profile

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论