Linux 环境变量的所有知识

今天详细聊聊环境变量吧。这个十分常见而基础的问题,想必经常困扰初学者,属于众多“我问了,人家也答了,我还看了帖子,但始终没搞明白”的问题之一。岛主试试用写科普的啰嗦风格解释一下。今天还会出现export/ln/alias等指令,不展开,想必大家也知道岛主想说啥了。

. Q55:常听说装完软件要添加环境变量,到底是什么意思?

有时你明明安装成功了某个软件,却无法启动。输入指令后提示“command not found”。
这时,先排除拼写错误,大小写混淆等。
如果拼写和安装本身没有问题,最有可能是命令的执行文件不在系统默认的搜索路径中,系统搜了一圈没找到它。

系统的环境变量是一个内置的参数:PATH。还记得前两天讲过用echo可以查看变量吗?无论是自己定义的变量,还是这种内置变量,都可以用echo来查看:echo $变量名
所以,查看当前系统环境变量PATH就是:

echo $PATH/usr/local/sbin:/usr/bin:/Users/ialbert/bin:/home/ubuntu/miniconda3/bin

每个人的系统设置不同,显示结果可能不太一样。
乍一看,长长一串很让人头晕。但仔细看一下,会发现:

PATH的内容是多个目录,彼此由冒号(:)隔开,除此之外也没啥玄机了。当你启动某个命令或软件,系统会按这些目录的顺序寻找相应的启动文件。

我们可以用which指令查看某命令当前的位置,如:

$ which samtools/usr/bin/samtools

$ which nanopolish/home/ubuntu/miniconda3/bin/nanopolish

你会发现,能正常使用的指令,其路径在PATH变量里都有迹可循。如果都找不到,系统就会报错。前几天介绍的生信分析必备的软件管理系统conda(我们装的是其精简版miniconda3),就能有效避免这种问题。
你是否还记得,最初安装miniconda的时候,中途会问你:

Installation finishedDo you wish the installer to initialize the Miniconda3in your home/user/.bashrc? [yes|no][no]>>> # 新手一般此处输入yes

回答yes,就是允许conda自动帮你配置环境变量。于是它会在PATH变量中添加一个属于它的目录,如/home/ubuntu/miniconda3/bin/。此后,用conda install安装的软件,其执行文件就会自动收在这个目录下,那自然也就包含在PATH变量里了,使用起来通常没啥问题。
但conda并没有收录所有的软件。有些很新、或不能用conda安装的软件,就需要手动安装。而如果启动文件的位置比较特立独行,不在PATH已有的范围里,这时你就需要手动帮它归队了。

. Q56:如何手动添加呢?

当然是修改PATH变量啦,把那个软件所在的目录用冒号:目录路径追加进PATH里就好了。
这种修改分两种,临时和永久。
临时,顾名思义,仅限当前有效,重启Linux系统后就没用了。永久添加,就是彻底写进系统的脚本文件里。如home目录下的~/.bashrc文件,其中记录了对当前用户有效的各种系统默认设置,每次启动Linux系统,这些设置都会自动生效。

  • 临时修改:
    用到export命令。

    用法:export 变量名=变量值

我们需要在PATH那一长串后追加新目录,写在冒号后就行了:原PATH追加目录。假设你要追加的目录是 /your_free_style_path/ (瞎编的):

export PATH="$PATH:/your_free_style_path/"

切记,这里原PATH的内容($PATH)要保留,冒号后再追加新内容,否则其他软件都不能用了。
有些帖子里的顺序可能是追加目录:$PATH,$PATH变量放在了后面。这其实无所谓,只是系统搜索时的先后顺序不同,追加在前面就先搜索前面的。

如果你在不同目录下装了同一款软件(比如不同版本),启动命令相同,那么按照PATH里的目录顺序,先搜到谁就用谁。除非你对另一个重命名以作区分。

  • 永久修改 方法1 (进入bashrc文件里修改)
    就要把刚刚的改动正式写进系统脚本里。

# 打开 ~/.bashrc的编辑模式vim ~/.bashrc

# 找到 PATH 变量的内容,手动把`:/your_free_style_path/`写进去。

# 退出vim,要激活修改才能生效。source ~/.bashrc
  • 永久修改 方法2 (不用vim编辑器,直接修改)

记得用>>

echo export PATH="$PATH:/your_free_style_path/" >> ~/.bashrc

. Q57:除了改PATH还能怎么做?

受修改变量的启发,还有一个非常有用的重命名指令alias,用惯了简直爱不释手。基本用法是:alias 别名='原命令 -参数'

比如说,你要用的软件叫toolx,试体会一下:

alias toolx = '/your_free_style_path/toolx'

以后每当你敲toolx,实际敲的是/your_free_style_path/toolx,路径跟着走,这样也可以愉快地使用软件了。同样,要把这句写进 ~/.bashrc 里并激活,否则效果也是临时的。
alais非常好用。由于可以带着参数一起重命名,就可以这么用:

# 简化常用指令:alias ll = 'ls -l'

# 指定最近常用的工作目录,方便随时跳转alias work ='~/project/analysis/variants/'cd work

# 简化软件的常用代码,比如一步激活一个conda小环境:alias clairev='conda activate clairvoyante-env'

. Q58:如果我不想动配置文件呢?

假设你正在一个目录里分析数据,最近你的工作都在这里,有个软件出现了上述情况,但你不想动系统的配置文件,有办法吗?

有的。你可以把那个软件的启动文件链接过来,就像“新建快捷方式”一样。注意链接要具体到文件名。

ln -s [对象的路径] [目标位置]

ln -s /your_free_style_path/软件名 ./

其实,既然可以链接到当前目录,何不链接到PATH下的某个目录(如/usr/bin/),更加一劳永逸?

cd /usr/bin/ln -s /your_free_style_path/软件名 ./
(0)

相关推荐

  • miniconda配置

    一.配置目录可以是C盘用户目录下的.condarc channels:   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/   - ...

  • ubuntu环境变量的三种设置方法

    一:设置环境变量的三种方法 1.1 临时设置 export PATH=/usr/local/arm/3.4.1/bin:$PATH 1.2 当前用户的全局设置 打开~/.bashrc,添加行:expo ...

  • 仅需一招,轻松搞定R包

    最近很多人问我的问题都是R包安装的问题.在之前R包只要更新到最新版本,且能够联网,就可以轻松安装.,但现在随着R的功能越来越多,越来越强大.R包也越来越难安装了.并且什么人都可以开发发布R包,很多垃圾 ...

  • 转录组学习一(软件安装)

    开篇:2017/10/7正式开始生信技能树论坛里的转录组入门从Linux下软件的安装 到 差异表达基因的功能注释及功能分析相关. 转录组相关软件的安装 任务 本地Windows电脑及服务器Linux系 ...

  • NGS数据分析实践:01. Conda环境配置及软件安装

    NGS数据分析实践:01. Conda环境配置及软件安装

  • shell环境变量有哪些知识?linux运维知识点

    环境变量一般是指用export内置命令导出的变量,用于定义Shell的运行环境,保证Shell命令的正确执行.Shell通过环境变量来确定登录用户名.命令路径.终端类型.登录目录等.Linux运维技能 ...

  • 一文理解linux环境变量(初学者之友)

    我的戏份在文末,建议结合我们技能树以前出品的一文系列一起学习: linux命令行文本操作一文就够 健明 继续见证学徒的成长! 对于Linux初学者来说,环境变量是个很陌生的名词,很多人不能理解它是到底 ...

  • Linux 环境变量配置全攻略

    来自:悠悠i 链接:https://www.cnblogs.com/youyoui/p/10680329.html Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种 ...

  • 【Linux 笔记】Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量

    【Linux 笔记】Linux 基本操作 - 01. 系统认知-文本处理-软件安装-环境变量

  • Linux中环境变量相关文件的区别

    Linux下各种不同环境变量相关文件的作用: 1. /etc/environment  设置整个系统的环境,系统启动时,该文件被执行. 2. /etc/profile     设置所有用户的环境,当用 ...

  • linux下添加环境变量

    例子: 使用命令将这个目录:"/home/geeksongs/.local/bin"添加进环境变量 命令行如下: export PATH=/home/geeksongs/.loca ...

  • linux下查看和添加PATH环境变量

    $PATH:决定了shell将到哪些目录中寻找命令或程序,PATH的值是一系列目录,当您运行一个程序时,Linux在这些目录下进行搜寻编译链接. 编辑你的 PATH 声明,其格式为: PATH=$PA ...

  • 每日一课 | Python 开发环境搭建及预备知识

    今天 Python大本营每日一课 大家好,我是营长,上期营长分享了数据科学"的知识点:,不清楚的小伙伴可戳这

  • 机房环境监控系统基础知识

    一. 概述   机房环境监控系统是一个综合利用计算机网络技术.数据库技术.通信技术.自动控制技术.新型传感技术等构成的计算机网络,提供的一种以计算机技术为基础.基于集中管理监控模式的自动化.智能化和高 ...