Linux如何修改env看到的环境变量? .bashrc和.bash_profile区别

news/2025/2/12 19:07:48

一、首先了解一下set、env、export的区别:
set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量

每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如 HOME,,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGCBASH,这些变量只有set才会显示,是bash特有的,export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过export 导出变成一个用户变量。


如用户想增加一目录到PATH中,操作如下:
1.vim .bashrc增加sbin目录到PATH中
$export PATH=$PATH:/sbin 或者export PATH=/sbin:$PATH

2.source到环境变量中
$source

3.检验设置的PATH是否生效
set|grep PATH  或env|grep PATH  或 export|grep PATH


二、.bashrc和.bash_profile的区别

.bash_profile会用在login shell
.bashrc 使用在interactive non-login shell

Bash下每个用户都可以配置两个初始文件:.bash_profile和.bashrc,文件存储在~根目录中。man bash中的相关解释如下:

,----------------------------------------------------------------------------
| ~/.bash_profile
| The personal initialization file, executed for login shells
| ~/.bashrc
| The individual per-interactive-shell startup file
`----------------------------------------------------------------------------

* 每次bash作为login shell启动时会执行.bash_profile。

* 每次bash作为普通的交互shell(interactive shell)启动时会执行.bashrc

* 注意
1)在shell脚本中“#!/usr/bin/bash”启动的bash并不执行.bashrc。因为这里的bash不是interactive shell。

2)bash作为login shell(login bash)启动时并不执行.bashrc。虽然该shell也是interactive shell,但它不是普通的shell。

* 一般.bash_profile里都会调用.bashrc

尽管login bash启动时不会自动执行.bashrc,惯例上会在.bash_profile中显式调用.bashrc。所以在你的.bash_profile文件中,很可能会看到如下的代码片段:

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi


.bashrc 使用在interactive non-login shell。意思是你每次运行一个bash脚本的话,.bashrc就会被执行一次。有个简单的方法,你在.bash_profile和.bashrc里都用echo打印点东西。,就可以看到着两个文件都是什么时候被执行的了。

编辑/etc/profile修改全局环境变量
编辑.bash_profile修改当前用户的环境变量
修改完成之后source一下即可生效,例如source ~/.bash_profile


https://dhexx.cn/news/show-1546586.html

相关文章

Python基础语句练习

运算符: - * / // %脚本要求:编写用户登录认证,用户名密码正确则登陆成功,反之则失败并警告重试值user "patwang"password "123123"for i in range(3): users input("You type in the user:…

[洛谷P3674]小清新人渣的本愿

题目传送门 这道题是一道莫队题。对于每一种问法,就是查询对应的数是否在当前的区间内。 设$b[i]$表示莫队当前区间中有没有$i$这个数。 对于第一问“是否可以选出两个数它们的差为x”,也就是判断当$i-jx$时是否存在$b[i],b[j]1$。变形一下发现$ijx$&…

nginx状态模块详解及实战

nginx status介绍nginx软件的功能模块中有一个ngx_http_stub_status_module模块,这个模块的主要功能是记录nginx的基本访问状态信息,让使用者了解nginx的工作状态,例如:连接数等信息。要想使用状态模块,在编译nginx时必…

windows下的host文件在哪里,有什么作用?

在Window系统中有个Hosts文件(没有后缀名),在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\Etc 目录中。WIN7(C:\Windows\System32\drivers\etc)该文件其实是一个纯文本的文件&#…

Selenium Grid简介与安装

一、序: 很多敏捷团队已经使用了Selenium和Watir等 工具进行验收测试或用户接口测试。这些工具通过驱动Web浏览器的方式反映用户体验,并且为测试那些使用DHTML和Ajax构建的动态接口提供强力支 持。然而,随着更多的团队采纳类似的工具&#xf…

JavaScript隐式类型转换

基本数据类型 ECMAScript 一共定义了七种 build-in types,其中六种为 Primitive Value,Null, Undefined,String, Number, Boolean, Symbol。而最后一种 Object build-in type 与通常意义上的 Ja…

C 语言

2019独角兽企业重金招聘Python工程师标准>>> #include <stdio.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h>typedef struct Hello {int a; } Hello;int main(){Hello *h;Hello ha;ha.a 1234;h &ha;int fd ope…

Selenium Grid使用与探索

一、启动Grid&#xff0c;顺序执行测试案例&#xff1a; 进入到Selenium Grid的根目录&#xff0c; ant launch-hub。启动Hub服务。运行后查看http://localhost:4444/console &#xff0c;检查Hub服务是否启动成功。 Hub启动成功后&#xff0c;首先来试运行一下&#xff0c;在…

如何将视频分割成几部分 视频剪切软件哪个好

视频已经成为继文字&#xff0c;图片后的又一个交流方式&#xff0c;在这个快节奏的发展时代&#xff0c;很多人看到文字就会头疼&#xff0c;转而通过视频来获取外界传递的信息&#xff0c;尤其是短视频以及影视的发展&#xff0c;对于很多女生来说&#xff0c;大概在追剧的过…

服务端线上接口监控实践

背景 最近上线了一个新的服务&#xff0c;这个服务有一个特点就是接入了n个第三方的数据服务&#xff0c;前端通过不同参数请求被测服务端&#xff0c;服务端根据参数不同proxy_pass到不同的后端服务器获取数据&#xff0c;处理后吐给前端展示&#xff1b; 问题 被测服务和后端…