~/.bashrc-Linux环境变量配置超详细教程
~/.bashrc-Linux环境变量配置超详细教程
文章目录
前言:
今天本来是想将代码调通的,但是一直受限于mujoco_py的渲染问题,前段时间发现两台Ubuntu18.04的机子可以offscreen渲染,另外三台Ubuntu16.04的机子无法offscreen渲染。
我以为我找到规律了,但是问题可能没有这么简单。
在解决这个问题的过程中,发现了mujoco_py的issues上有这样一个回复:
https://github.com/openai/mujoco-py/issues/408#issuecomment-735674851
提到这句话:
A non-working machine will typically include dependencies like:
/usr/lib/x86_64-linux-gnu/libGLEW.so (0x00007fa44cf82000)
离谱,我几乎所有的机子上都加了这个路径;
但是我的Ubuntu16的主机,加了太乱了,我也不知道那些句子使得路径生效,因此就百度搜索了好多~/.bashrc的环境变量配置问题,并没有找到合适的教程。
本篇博客将带着大家看懂下面的几句话的意思:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/us/.mujoco/mujoco200/bin:/usr/lib/nvidia-460:${CUDA_HOME}/lib64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so
export PATH="/home/us/Downloads/pycharm-2020.1/bin:$PATH"
export PATH="/home/us/Downloads/pycharm-2018.1/bin"
export CUDA_HOME=/usr/local/cuda-11.2
首先我们知道这个export是添加路径的意思,空格后面是环境变量名,有上面有四个不同的环境名,还有一个变量名被导入两次算是什么意思?
这个$PATHNAME是什么意思?为什么有不同的位置?
这个冒号:是什么意思?
这个大括号{}有什么作用?
如何验证我们的路径是否导入正确?
花里胡哨的操作,很难直接百度到想要的答案,我没系统的看过Linux的基础书记,总之这篇文章就都列出来做个分享~
参考链接:
1.最简单的环境变量配置全流程,新手向:
1.利用vim进入~/.bashrc文档,摁住ctrl+g,直接跳到最后一行,摁一下i键,进入插入模式,现在可以编辑文档了。
2.跳到最后一个字符,摁一下换行,可以在下一行输入命令。
3.一般来说在Ubuntu的终端中,ctrl+shift+c是复制,Ctrl+shift+v是粘贴;
4.我们输入第一个环境变量配置:
export DEMOPATH="/xxx/xxx/xx1x/"
5.路径添加好了,该关闭~/.bashrc了,摁一下esc键,退出插入模式;
6.输入冒号:wq,关闭bashrc;
7.这时候还没有生效!需要source一下,source命令的含义的博客:
source ~/.bashrc
8.刚才配置的环境终于在这个终端生效了!,我们验证一下该环境变量到底有没有我们加的东西,我们有两种方法:
1.1 Linux读取环境变量的两种方法
读取环境变量的方法:
export
命令显示当前系统定义的所有环境变量echo $PATH
命令输出当前的PATH环境变量的值$PATH
直接调取当前PATH的值。
使用中间的这个,终端输入:
echo $DEMOPATH
显示结果:
/xxx/xxx/xx1x/
我们使用后者,在终端输入:
$DEMOPATH
显示了:
bash: /xxx/xxx/xx1x/: No such file or directory
虽然我们的这个路径没有显示的文件夹,但是变量名和路径是整上去了。
现在我们开整第二个功能:
2.为同一个环境变量添加多个路径
我们在python中经常会遇到一个环境变量,需要加多个路径,但如何添加多个路径呢?
直观上用个分号;行不行?不行!
我们需要用冒号:来分开!离谱!
好的我们现在在~/.bashrc中再加一句路径,变成了下面的样子:
export DEMOPATH="/xxx/xxx/xx1x/"
export DEMOPATH="/xxx/xxx/xx2x/"
生效后,我们检验一下效果:
bash: /xxx/xxx/xx2x/: No such file or directory
嗯?我的路径1 呢?
原来是被覆盖掉了!
下面我展示几种同一个环境变量添加多个路径的方法:
2.1一行式冒号:添加多个路径
上面我们知道,划分多个路径,通过冒号。
那么我们将同一个环境变量的路径,写到一行,路径之间用冒号隔开:
export DEMOPATH="/xxx/xxx/xx1x/":"/xxx/xxx/xx2x/"
显示效果如下:
bash: /xxx/xxx/xx1x/:/xxx/xxx/xx2x/: No such file or directory
终于成功了!
但是这个不优雅,一句话写太长了,中间错了都不知道错哪儿了。
因此我们需要一个增量式的路径添加:
2.2$PATHNAME实现增量式添加
上面我们用了好几次这个美元符 , 这 个 符 号 是 什 么 意 思 呢 ? 直 观 的 理 解 就 是 , 直 接 调 取 当 前 环 境 变 量 的 值 。 因 此 我 们 可 以 用 这 个 ,这个符号是什么意思呢? 直观的理解就是,直接调取当前环境变量的值。 因此我们可以用这个 ,这个符号是什么意思呢?直观的理解就是,直接调取当前环境变量的值。因此我们可以用这个PATH,来代替原本环境变量的路径,要是加东西的话,在前面或者后面加一个分号就行了~
2.2.1利用$PATH在后面!增加!新的路径
export DEMOPATH="/xxx/xxx/xx1x/"
export DEMOPATH="$DEMOPATH:/xxx/xxx/xx2x/"
打印结果如下:
/xxx/xxx/xx1x/:/xxx/xxx/xx2x/
确实在后面,效果是先调用之前的1,再在后面加上2;
2.2.2利用$PATH在前面!增加!新的路径
export DEMOPATH="/xxx/xxx/xx1x/"
export DEMOPATH="/xxx/xxx/xx2x/:$DEMOPATH"
打印结果如下:
/xxx/xxx/xx2x/:/xxx/xxx/xx1x/
效果就不用描述了~
3.大括号,单引号,双引号的作用:
- 大括号{}用在变量名的身上,用处目前没看出来有没有明显的区别;
- 路径可以直接写,也可以加双引号,但是一定不能加单引号!
不加引号的效果:
输入:
export DEMOPATH=/xxx/xxx/xx1x/
export DEMOPATH=/xxx/xxx/xx2x/:$DEMOPATH
输出
$ echo $DEMOPATH
/xxx/xxx/xx2x/:/xxx/xxx/xx1x/
双引号的效果:
输入:
export DEMOPATH="/xxx/xxx/xx1x/"
export DEMOPATH="/xxx/xxx/xx2x/:$DEMOPATH"
输出
/xxx/xxx/xx2x/:/xxx/xxx/xx1x/
加不加我没看出来,如果有什么隐含的区别,请大家告知!
单引号的效果:
输入:
export DEMOPATH='/xxx/xxx/xx1x/'
export DEMOPATH='/xxx/xxx/xx2x/:$DEMOPATH'
输出:
/xxx/xxx/xx2x/:$DEMOPATH
这时候就没有转义成功!
总结:
这个路径导入涉及到的点都是我之前没有接触过的。
很多玩意儿连关键词都搜不准确。
但又几乎是每天都用,因此做一个总结分享。
联系方式:
ps: 欢迎做强化的同学加群一起学习:
深度强化学习-DRL:799378128
欢迎关注知乎帐号:未入门的炼丹学徒
CSDN帐号:https://blog.csdn.net/hehedadaq
极简spinup+HER+PER代码实现:https://github.com/kaixindelele/DRLib
更多推荐
所有评论(0)