linux系统环境变量一文就够
Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。 通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
环境变量有很多,需要重点理解的就是PATH,很多时候大家看到教程某些软件的使用,比如
mkdir -p ~/tmp/chrX_Y/hg19/cd ~/tmp/chrX_Y/hg19/#conda install -c bioconda bwa#conda install -c bioconda samtoolswget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/chromosomes/chrX.fa.gz; wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/chromosomes/chrY.fa.gz; gunzip chrX.fa.gzgunzip chrY.fa.gzwget https://github.com/jmzeng1314/my-perl/blob/master/2.chrX-chrY/simulate.pl~/biosoft/bwa/bwa-0.7.15/bwa index chrX.faperl simulate.pl chrY.fa~/biosoft/bwa/bwa-0.7.15/bwa mem -t 5 -M chrX.fa read*.fa >read.samsamtools view -bS read.sam >read.bamsamtools flagstat read.bamsamtools sort -@ 5 -o read.sorted.bam read.bamsamtools view -h -F4 -q 5 read.sorted.bam |samtools view -bS |samtools rmdup - read.filter.rmdup.bamsamtools index read.filter.rmdup.bamsamtools mpileup -ugf ~/tmp/chrX_Y/hg19/chrX.fa read.filter.rmdup.bam |bcftools call -vmO z -o read.bcftools.vcf.gz
bwa软件就没有添加到环境变量,所以需要用全路径,指明使用电脑里面什么地方的bwa软件来做数据分析,而samtools我已经添加到环境变量了,所以可以直接调用。 而为什么没有把bwa添加到环境变量,是因为我的安装方式的问题,我的安装代码如下:
## Download and install BWAcd ~/biosoftmkdir bwa && cd bwa#http://sourceforge.net/projects/bio-bwa/files/wget https://sourceforge.net/projects/bio-bwa/files/bwa-0.7.15.tar.bz2 tar xvfj bwa-0.7.15.tar.bz2 # x extracts, v is verbose (details of what it is doing), f skips prompting for each individual file, and j tells it to unzip .bz2 filescd bwa-0.7.15make#export PATH=$PATH:/path/to/bwa-0.7.15 # Add bwa to your PATH by editing ~/.bashrc file (or .bash_profile or .profile file)# /path/to/ is an placeholder. Replace with real path to BWA on your machine#source ~/.bashrc
可以看到我的bwa安装在 ~/biosoft/bwa/bwa-0.7.15/
目录,而且我并不想把它添加到环境变量。 假如我使用的是 conda install -c bioconda bwa
那么这个bwa软件就会被自动添加到环境变量,因为conda会帮我管理好所以软件。
而把安装好的软件添加到环境变量的方法有:
第一种方法
export PATH=/usr/local/webserver/mysql/bin:$PATH ## 先添加echo $PATH ### 再查看
上述方法的PATH 在终端关闭后就会消失。所以还是建议通过编辑/etc/profile来改PATH,也可以修改家目录下的.bashrc(即:~/.bashrc)。只不过通常情况下普通用户都是修改自己目录下的 .bashrc
文件。
第二种方法
vim /etc/profile在最后,添加:export PATH="/usr/local/webserver/mysql/bin:$PATH"保存,退出,然后运行: source /etc/profile,不报错则成功。
当然,还有很多其它的环境变量,如下:
PATH: 决定了shell将到哪些目录中寻找命令或程序ROOTPATH: 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。HOME: 当前用户主目录USER: 查看当前的用户LOGNAME: 查看当前用户的登录名。UID: 当前用户的识别字,取值是由数位构成的字串。SHELL: 是指当前用户用的是哪种Shell。TERM : 终端的类型。PWD 当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。MAIL: 是指当前用户的邮件存放目录。HISTSIZE: 是指保存历史命令记录的条数HOSTNAME: 是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。PS1: 是基本提示符,对于root用户是#,对于普通用户是$,也可以使用一些更复杂的值。PS2: 是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符,比如下列命令会将提示符修改成字符串“Hello,My NewPrompt :) ”。# PS1=" Hello,My NewPrompt :) "IFS: 输入域分隔符。当shell读取输入时,用来分隔单词的一组字符,它们通常是空格、制表符和换行符。
大部分并不需要背诵,我们要学会的其实是搜索技巧,碰到陌生的知识点,用于搜索。
当然, 对很多不希望太纠结的朋友,选择conda就足够了。
其实Windows系统也是有环境变量的,只是很多朋友选择性的忽视掉了,因为Windows操作系统是界面版本的,所以只需要右键点击我的电脑进行属性,选择高级设置里面的环境变量即可。(好久没有用Windows,可能说的不太对,希望你自己去搜搜,尤其是你需要安装java等工具,可能会与环境变量打交道)
马哥linux视频里面有详细讲解这些细节问题,如果你看文字版本不能迅速理解,在生信技能树的公众号后台回复 马哥 可以拿到系列视频,推荐自行观看视频
- 【黑客浅析】像黑客一样思考
- 【腾讯云的1001种玩法】 十分钟轻松搞定云架构 · 负载均衡的几种均衡模式
- ASP.NET Web API的Controller是如何被创建的?
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构:COS的两种上传模式
- 物流行业迎变革,云计算是基础,大数据是关键
- Socket学习总结系列(二) -- CocoaAsyncSocket
- 比特币勒索病毒肆虐,腾讯云安全专家给你支招
- HTML5 直播协议之 WebSocket 和 MSE
- IoC在ASP.NET Web API中的应用
- 跟鹅厂老司机学技术之一:“遇见” Kotlin
- 简单的 H5 视频推流解决方案
- 来腾讯云开发者实验室学习.NET
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- 使用腾讯云 GPU 学习深度学习系列之六:物体的识别与定位
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux使用iptables限制多个IP访问你的服务器
- 在 Linux 中不使用 CD 命令进入目录/文件夹的方法
- 探索Linux内核:Kconfig的秘密
- Linux中使用命令more,less,cat查看文件内容
- SSH的ssh-keygen命令基本用法详解
- 图文详解Ubuntu搭建Ftp服务器的方法(包成功)
- Linux中chown与chmod两个命令的区别详解
- 解决navicat连接不上linux服务器上的mysql问题
- 增强Linux和Unix服务器安全性的方法详解
- ubuntu下没有中文输入法的解决办法
- linux查看端口是否开放的方法总结
- Linux下删除乱码或特殊字符文件的方法讲解
- Ubuntu Server下无线网卡的配置详解
- Linux中修改mysql默认编码的方法步骤
- ubuntu16.04搭建nfs服务的方法