参考:详解/etc/profile、/etc/bash.bahsrc、~ /.profile、~/.bashrc的用途——含测试
linux下/etc/profile、/etc/bashrc、~/.bashrc 和~/.bash_profile文件的区别
登录式shell和非登录式shell?
登录式shell——
是完全切换用户。
登录方式:su -l 用户名(su - 为root身份登录)。
非登录式shell——
是不完全切换用户,就算切换过来了,你pwd时家目录还是之前的家目录。
登录方式:su 用户名。
在终端输入bash打开一个新的shell也是non login 。
环境变量
指定一个目录,运行软件或程序的时候,相关程序会按照目录寻找相关文件,使你可以在非安装目录运行软件
终端中相关命令说明
export 此命令导入和查看环境变量
bash 打开一个新的shell,此时并没有打开新终端
设置环境方法:
1. 控制台
仅临时有效,仅针对于当前shell
$PATH="$PATH:/opt/tomcat"
2. 配置文件/etc/profile、/etc/bashrc、~/.bashrc和~/.bash_profile
文件中export PATH=$PATH:/opt/tomcat
参考文件中的测试总结
背景:分别在四个配置文件/etc/profile、/etc/bashrc、 ~/.bashrc和 ~/.bash_profile最后,加入一个新的环境变量TESTBASH。每一个文件都为这个环境变量加入不同的值
普通用户下测试:操作 | 解释 | 未重启效果 | 重启效果 |
---|---|---|---|
输入$export | 看原终端 | 四个设置都失败,显示0个值 | /etc/profile、/etc/bashrc、 ~/.bashrc和 ~/.bash_profile设置成功√,显示4个值 |
输入$bash | 打开新shell | /etc/bashrc、 ~/.bashrc设置成功,显示2个值 | 以上四项+新/etc/bashrc、新 ~/.bashrc设置成功,显示6个值 |
开新终端 | 开新终端 | /etc/bashrc、 ~/.bashrc设置成功,显示2个值 | - |
输入$su root 及$exit | 非登录式切换root用户 | 以上两项+新/etc/bashrc、新 ~/.bashrc设置成功,显示4个值 | 以上四项+新/etc/bashrc设置成功,显示5个值 |
输入$su –l root 及$exit | 登录式切换root用户 | /etc/profile、/etc/bashrc设置成功,显示2个值 | /etc/profile、/etc/bashrc设置成功,显示2个值 |
结论:
1)打开一个新的shell(包括打开一个新终端和在终端上输入bash),都会重新读取/etc/bashrc 和 ~/.bashrc文件里面的内容。
2)Linux普通用户身份启动登录时(重启操作)会读取/etc/profile和 ~/.profile文件的内容。然后再打开终端时,会去读取/etc/bashrc和 ~/.bashrc文件。
3)使用login 方式是会读取/etc/profile 和 ~/.profile文件(这也就导致了有些软件安装后,要重启才能生效)。使用non login方式会读取/etc/bashrc 和 ~/.bashrc文件的内容。
安装软件修改配置文件,是为了在配置文件中添加用于那些软件的环境变量。这四种配置文件中都可以添加环境变量。但由于,在不同文件下的配置信息的生效时间不同,也就导致要使配置信息生效系统要不要重启的问题。
即,如果是在/etc/bashrc 和 ~/.bashrc文件中添加配置信息,那么打开一个新的shell就生效(因为打开新的shell会读取这个两个文件)。也可以输入$source /etc/bashrc或者 $ . /etc/bashrc命令( . 和 /之间还有一个空格)或者$source ~/.bashrc使在本shell中生效使用。
如果是在/etc/profile 和 ~/.profile 文件中添加配置信息,这个两个文件只会在login 下才会读取。重启或输入$source /etc/profile
网友评论