linux中.bash_profile 与 .bashrc的区别与用途
这两个文件都是在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是每次交互的时候就会调用
- 直接在机器中login时,登录成功后会调用.bash_profile
- 如果是ssh或者su用户时,这时会调用.bashrc
- 当登录成功后,每次打开一个终端时,这时也会调用.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
相关推荐
-
「PHP」MVC框架是什么?为什么要用它2025-02-25 00:25:41
-
如何用PHP写一个比较安全的API系统(实现)2025-02-25 00:19:49
-
php 解析url获取相关信息2025-02-25 00:15:37
-
mysql命令总结和PyMysql2025-02-25 00:11:35
-
MySQL特性:深入理解ICP2025-02-25 00:11:07