参考文章:
Linux下查看和添加PATH环境变量Linux中环境变量的设置Linux操作系统下三种配置环境变量的方法Linux 添加环境变量的五种方法

1.环境变量

变量是用一个固定符号代表可变内容,就像中学时期学过的X值一样可以变化,只是在Linux系统中,是需要自己对其值进行设定。我们提到的环境变量分为两种:
1. Shell定义的环境变量
Shell在开始执行的时候就已经定义了一些与系统工作环境有关的变量,用户还可以重新定义这些变量。它相当于环境的一个快捷键,它可以告诉你环境中设置的值都是哪些。 常用的shell环境变量有以下几种。
HOME:用于保存用户主目录的完全路径名。
PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
SHELL:当前用户使用的Shell
UID:当前用户的UID
LOGNAME:当前用户的登录名
HOSTNAME:主机名称
2. 环境变量$PATH
$PATH的值是一系列目录,它是由各种命令或程序的目录(bin)所组成,当你在运行一个程序的时候,Linux在这些目录下按一定顺序进行搜寻编译链接。

2. 查看PATH环境变量

1. 使用export命令查看PATH值(此处指shell下所有的环境变量)

zexing@DNA:~$ export
declare -x HOME="/f/xudonglab/zexing"
declare -x LANG="en_US.UTF-8"
declare -x LOGNAME="zexing"
declare -x MAIL="/var/mail/zexing"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin"
declare -x PWD="/f/xudonglab/zexing"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x USER="zexing"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/share:/var/lib/snapd/desktop"
declare -x XDG_RUNTIME_DIR="/run/user/1035"
declare -x XDG_SESSION_ID="9350"

比如上面export查看结果如下:
HOME="/f/xudonglab/zexing #该shell下面的home目录;
declare -x LANG=“en_US.UTF-8” #该shell下面的语言;
declare -x LOGNAME=“zexing” #该shell下的名称
declare -x MAIL="/var/mail/zexing" #该shell下面的邮箱
declare -x SHELL="/bin/bash" #该shell为bash
总之,可以理解为在这个shell下面的一些默认值。
2. Linux中set 、env 和 export 都可以查看环境变量

set命令显示当前shell的变量,包括当前用户的变量,set主要用来设置sh的参数与选项
env命令显示当前用户的变量,env用来在构建的环境中运行命令
export命令显示当前导出成用户变量的shell变量

每个shell都有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,
但shell自己的变量不同,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的。
export不加参数的时候,显示哪些变量被导出成了用户变量,因为一个shell自己的变量可以通过 export “导出”变成一个用户变量。
3. 查看$ PATH这个环境变量(此处指变量$PATH所代表的默认值)

zexing@DNA:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

#这里显示了一系列目录,它们之间用冒号(:)隔开,分别代表不同命令或程序(bin)所在的目录,在输入一个命令时,Linux也是按照这个顺序去搜寻该命令的。

3. 添加环境变量

根据以上分类介绍的理解,我们在说添加环境变量时是两种:
一个是添加到shell默认的一系列变量中(即自己定义一个X值,并指定其代表的范围);
另一个是改变变量($PATH)包含的目录范围。

我们在Linux系统中下载并安装应用程序时,如果进入该软件安装目录的bin文件夹内才可以执行命令;如果更换到其他目录中,很可能在键入它的名字时出现“comman not found”的提示内容,这是因为命令没有加入到环境变量中,也就是第二种添加环境变量的情况。

根据改变的$PATH的范围不同,有三种设置方法

1. 只对当前shell有效(shell脚本中常用)——命令行中设置(对$PATH变量重定义)
不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。
方法一:

PATH=“$PATH”:/yourpath/bin

方法二:

eport PATH="PATH":/yourpath/bin

2. 只对当前用户有效(安装软件时用户常用)——修改当前家目录下的 .bashrc 文件
这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。
方法一:

vi ~/.bashrc  #用vi/vim编辑器修改bashrc文件
i  #由command line进入insertion line
export PATH=$PATH:/home/xiaomotong/software/sratoolkit/bin
ESC, :wq  #退出vi编辑器并保存文件
source ~/.bashrc  #让配置生效

方法二:

#使用echo进行写入
#使用>>定向写入
echo 'export PATH=/.aspera/connect/bin:$PATH' >> ~/.bashrc
#刷新环境变量
source ~/bashrc

3. 针对所有用户有效——修改/etc/bashrc 文件或etc/environment文件 (有待进一步学习)
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。
方法一(修改environment文件):

#打开environment文件
vim /etc/environment
#修改PATH变量,在变量字符串末尾加:和 YOUR_PATH
PATH="...:YOUR_PATH"
#使配置立即生效
source /etc/environment

方法二(修改profile文件):

#打开文件
vim /etc/profile
#在打开的文件末添加
export PATH ="$PATH:YOUR_PATH"

4. 关于环境变量的写法

在环境变量PATH中加入用户dst的目录:home/dst/bin

PATH=$PAT:home/dst/bin
PATH="$PATH":home/dst/bin
PATH=${PATH}:home/dst/bin #鸟哥最推荐的变量写法!!!
PATH="$PATH:home/dst/bin”