Linux||环境变量
昨天在听完生信技能树关于环境变量的课以后生信入门课-2021第7期,醍醐灌顶,又去鸟叔的书里翻了翻,趁我现在还记得,抓紧把笔记做下来,所以本期介绍环境变量。
你是否想过,为什么我们第一次进入服务器,什么都没做却能有一堆能用的变量呢?这是因为系统中有一些环境配置文件的存在。
环境变量是用来存储有关shell会话和工作环境的系统变量。
常见环境变量:
- HOME:当前用户的主目录
- PATH:shell查找命令的目录列表,由冒号分隔
- SHELL:bashshell的全路径名
- LOGNAME:当前用户的登录名
- PS1:shell命令行界面的主提示符
- PS2:shell命令行界面的次提示符
通过echo命令可以打印变量的值,但需要注意的是变量调用需要在前面加$。
.bashrc
系统配置文件,包含专用于你的bash shell的bash信息、设置,每次登录或打开新的shell时,该文件会被自动读取和执行。如果修改了该文件,需要source(类似于重启电脑)。
$PATH
which ls
我们知道ls命令的完整路径为/bin/ls,那么为什么我可以在任何地方直接输入ls去执行命令,而不是提示找不到该命令呢?
这就不得不提到环境变量PATH。
输入ls命令时,系统会按照PATH的设置去每个PATH的定义的路径中查找ls的可执行文件,如果PATH定义的路径中有多个ls的可执行文件,则执行先查找到的同名命令。
再举一个grep命令的例子,通过which命令可以发现grep命令位于 /bin目录中
再去查看一下$PATH中是否有该路径,确实有。
因此,我们在安装新命令后,也应该修改环境变量。
我们再回过头来看一下:安装conda的最后一步时,有一个需要输入yes/no的操作,当我们输入yes以后,.bashrc文件中多出了这么一段代码,export PATH="/home/zwang/anaconda3/bin:$PATH",即修改了环境变量,保证了通过conda安装的软件不需要再去修改环境变量。同时,这也解释了为什么我们在安装完conda以后需要source或重启。
关于PATH的几个点
- 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同
- PATH是可以修改的
- 使用绝对路径或相对路径直接指定某个命令来执行会比查找PATH更准确
小环境与$PATH
经过上面的学习,我们已经能够理解$PATH和.bashrc了。
当我们运行不同的项目时,往往会由于不同软件依赖条件和环境不同而通过[conda create -n 环境名]去创建不同的小环境。
举个例子,我在名为rna的小环境下通过conda安装了fastqc。
这时在base环境下,查看fastqc的帮助文档
发现在base环境下并不能调用fastqc,我们查看一下此时的$PATH。
base环境下的$PATH
当我们激活rna环境以后,就可以成功的查看fastqc的帮助文档了
我们现在再来看看$PATH
rna环境下的$PATH
与base环境下的$PATH进行对比,我们可以发现路径/home/zwang/anaconda3/bin居然变成了/home/zwang/anaconda3/envs/rna/bin!!!
这就说明激活环境时改变了环境变量!我们再来查看fastqc的路径,确实如此!
- 「生信技能树」生信入门课-2021第6期
https://mp.weixin.qq.com/s/Q-Rp2Vnr-_4sJWQ4xOLieQ
- 鸟哥的Linux私房菜
相关文章
- 使用 Amazon Lambda 和 DynamoDB构建 Alexa WWA 智能家居设备的 SmartHome Skill
- AWS 一周回顾 – 2022 年 8 月 22 日
- python selenium 环境_配置Python Selenium环境
- AWS Trusted Advisor – 新的 Priority 功能
- 中国区通过CDK安装EKS Helm Chart 常见错误及解决方案
- Grillo 如何在 AWS 上构建低成本地震预警系统
- 新增功能 – Amazon CloudFront 支持 HTTP/3
- 十年间 Amazon EBS 预调配 IOPS 的持续发展
- 深入浅出的谈谈Amazon EKS的身份认证处理
- 全新 — AWS Private 5G 构建您自己的专用移动网络
- 新功能 — 借助 Amazon DevOps Guru 中的日志异常检测和建议功能,快速检测和解决问题
- 中国区CloudWatch Dashboard跨区域集成指标
- Wellforce 宣布将卫生系统的数字医疗保健生态系统迁移到 AWS
- 通过 Amazon Connect 与医生轻松沟通并简化患者的计费
- AWS 一周回顾 — 2022 年 8 月 8 日
- 借助AWS Secrets Manager管理特权凭证
- 基于Seedfarmer的云资源编排
- Python1_Python的工程目录结构
- 推荐系统系列之推荐系统召回阶段的深入探讨
- Graviton 快速启动 – 帮助您将工作负载迁移到 AWS Graviton 的全新计划