我的戏份在文末,建议结合我们技能树以前出品的一文系列一起学习: linux命令行文本操作一文就够 健明 继续见证学徒的成长!
什么是环境变量首先,在百度百科中,环境变量的解释是这样的:
描述性文字理解起来还是太抽象了,我们还是用几个简单的例子,来学习一下环境变量吧 首先,我们登陆上服务器,然后输入 ls 命令:vip18 10:06:09 ~ 可以看到,在当前用户 vip18 的家目录~ 下,有一个文件叫readme.txt ,但是,当前目录下面并没有ls 命令所对应的可执行文件。真正的ls 命令的可执行文件,其实是在别处,我们用which ls 可以查看到ls 所在的位置:vip18 10:06:13 ~ 可以看到, ls 其实是保存在/bin/ls 这个目录下的。而我们之所以可以随时随地的调用ls ,是因为当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。接下来我们看看当前的环境变量PATH 是什么,用echo $PATH 可以查看到vip18 10:11:28 ~ 可以看到, PATH 记录的是很多个目录,这些目录以冒号: 作分割,为了让大家看的清楚,我们把冒号: 替换成\n vip18 10:27:59 ~ 其实, PATH 就是记录了很多以bin 或者sbin 为结尾的目录,这些目录下面就包涵了很多可执行文件,比如我们上面提到的ls 命令所在的目录/bin 就是倒数第4个。感兴趣的可以去看看其他命令对应的可执行文件都记录在哪个目录里面,这里不再展示。如何修改环境变量修改环境变量,其实就是对环境变量进行重新赋值,比如我们安装了一个软件叫 aspera # 下载 这个软件安装好了之后,会在用户的家目录下的生成一个隐藏目录 .aspera ,需要用ls -a 来查看进一步查看这个目录的结构: 发现它的下下层目录也有一个叫 bin 的目录,包涵的可执行文件有$ ls .aspera/connect/bin/ 假如我们想像调用 ls 那样随时随地的调用这个软件的命令,即~/.aspera/connect/bin/ 目录中的可执行文件,那么就需要把这个路径添加到环境变量里面去,方法是:export PATH="~/.aspera/connect/bin/:$PATH" 运行上面这一行命令之后,就可以随时随地得调用了,如: 但是,这方法并不能一劳永逸,我们需要把它写进去 .bashrc 里面去.bashrc文件.bashrc 是一个配置文件,也是一个隐藏文件,存在于用户的家目录~ 下,需要用ls -a 才能查看到,当我们每次登陆服务器时,这个文件就会被执行一次,也就是说文件内的代码会被运行一遍。因此,当我们把export PATH="~/.aspera/connect/bin/:$PATH" 这一行命令写入.bashrc 后,以后每次登陆服务器,系统就会帮我们把这一行命令执行一次,我们就不能再自行运行了,方法如下:echo export PATH="~/.aspera/connect/bin/:$PATH" >>.bashrc 这样我们就把这一行代码写入到 .bashrc 里面了,我们说过,.bashrc 是在登录服务器的时候才会被执行,因此,我们修改好了之后,要重新登录服务器,或者重新运行一下.bashrc ,方法如下:source .bashrc 这里不建议新手采用 vim 来编辑.bashrc ,除非你已经知道如何使用vim 这个工具一些其他软件,如 conda ,在安装的时候会有一句提示,问我们是否要把conda 的环境添加到.bashrc 如:Do you wish the installer to prepend the Miniconda2 install location 我们直接输入yes,这样conda的环境就自动添加到.bashrc里面了,不需要像上面那样自己添加。 补充一个错误的示例有一些初学者,在修改环境变量的时候,不小心改成了这样: echo export PATH="~/.aspera/connect/bin/:$ PATH" >>.bashrc 咋一看好像没什么问题,但其实这是个大问题,后面的 $ 与PATH 之间按多了一个空格,重新激活.bashrc 后,就会出现下面的现象:上面的这些命令都用不了了,报错信息都写着: xxx is not included in the PATH environment variable 但是同时,报错信息也给出了非常重要的一点,如: Command 'ls' is available in '/bin/ls' ,也就是告诉你了ls 命令的可执行文件所在的路径,那么,我们只需要采用全路径调用的方法即可使用这些命令了。当然,我们最终的解决办法还是要把环境变量改回来,一个方法就是删掉最后一行,也就是我们前面追加的一行代码,如: /bin/sed -i '$d' .bashrc 最后在重新登录服务器就ok了。 后记 修改PATH也许并不是一个好习惯 如果每次安装一个软件就添加其路径到环境变量,最后我们的PATH会变得非常臃肿,通常并不建议这种方式管理软件。 另外一个比较常见的方式是设置文件链接到PATH的其中一个路径,或者直接把可执行的文件拷贝过去。 再或者设置 alias也可以,相信技能树的粉丝高手众多,也许会有自己的软件管理技巧,欢迎留言分享自己的心得体会! ■ ■ ■ 全国巡讲约你 生信技能树(爆款入门培训课)全国巡讲约你 第一站-重庆 (已结束) 粤港澳大湾区专场 (已结束) 第二站-济南 (已结束) 千呼万唤进北京(已结束) 巡讲-广州和上海(已结束) 郑州和西安(全部结束) 第9、10站-武汉和成都(全部结束) 七月份我们不外出,只专注单细胞! 系统学习单细胞分析,报名生信技能树的线下培训,手慢无 ![]() 。 一年一度的生信技能树单细胞线下培训班火热招生 ---------------------------------------------------------------------------------------------------------------------- 我们尊重原创,也注重分享,文章来源于微信公众号:生信技能树,建议关注公众号查看原文。如若侵权请联系qter@qter.org。 ---------------------------------------------------------------------------------------------------------------------- |