Linux环境变量设置

Linux下环境变量设置,可以在通过export命令在控制台中设置,也可修改profile 文件或者bashrc文件。

export命令

控制台中用户利用export命令,在当前终端下声明环境变量,只对当前的Shell终端起作用,关闭Shell终端失效。如:

1
export NODE_ENV="production"

修改profile 文件

用户登录时,文件会被执行。修改profile 文件,环境变量对该系统中所有用户都永久有效。因为所有用户的Shell终端都有权使用这个环境变量,可能会给系统带来安全性问题。
添加环境变量时,可以在行尾使用;号,也可以不使用。一个变量名可以对应多个变量值,多个变量值使用:分隔。

1
PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:....:<PATH N>

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vim /etc/profile
#添加
export NODE_ENV="production"
# node
export NODE_HOME=/usr/local/node/v8.11.4
export PATH=$NODE_HOME/bin:$PATH
# yarn
YARN_INSTALL_DIR=/usr/local/yarn/v1.9.4
PATH=$PATH:$YARN_INSTALL_DIR/bin
# proxy
export http_proxy=http://web-proxy.net:8080
export https_proxy=$http_proxy
export HTTP_PROXY=$http_proxy
export HTTPS_PROXY=$http_proxys
export no_proxy=127.0.0.1,localhost
export NO_PROXY=$no_proxy
#使配置生效
source /etc/profile
#查看是否生效
$ echo $NODE_ENV

修改bashrc文件

bashrc文件有两种:/etc/bashrc~/.bashrc。bashrc只会被bash shell调用。
/etc/bashrc对该系统中所有用户都永久有效,当用户打开Shell终端时,该文件被读取,修改后无需重启,重新开一个Shell终端即可生效,也可以使用source命令强制立即生效。
~/.bashrc只对某个用户永久有效,当登录或打开新的Shell终端时,文件被读取,修改后无需重启,重新开一个Shell终端即可生效,也可以使用source命令强制立即生效。
修改用户主目录下的~/.bashrc文件,对某个用户永久有效。这种方法相对安全。

1
2
3
4
5
6
7
vim ~/.bashrc
#添加
export NODE_ENV="production"
#使配置生效
source ~/.bashrc

修改bash_profile文件

用户登录时,文件会被执行。~/.bash_profile文件只对某个用户永久有效,和profile文件作用类似。

1
2
3
4
5
6
7
vim ~/.bash_profile
#添加
export NODE_ENV="production"
#使配置生效
source ~/.bash_profile

常见环境变量

  • $PATH:决定了shell将到哪些目录中寻找命令或程序
  • $HOME:当前用户主目录。
  • $SHELL:指当前用户用的是哪种Shell。
  • $LOGNAME:指当前用户的登录名。
  • $HOSTNAME:指主机的名称。
  • $HISTSIZE:指保存历史命令记录的条数。
  • $LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
  • $MAIL:指当前用户的邮件存放目录。
  • $PS1:是基本提示符,对于root用户是#,对于普通用户是$,也可以使用一些更复杂的值。
  • $PS2:是附属提示符,默认是“>”。可以通过修改此环境变量来修改当前的命令符。
  • $IFS:输入域分隔符。当Shell读取输入时,用来分隔单词的一组字符,它们通常是空格、制表符和换行符。
  • $0:shell脚本的名字。
  • $#:传递给脚本的参数个数。
1
2
3
4
5
6
7
8
#在shell中
echo $0
#输出
/usr/bin/bash
echo $#
#输出
0

环境变量相关的命令

  • export 设置一个新的环境变量 export NODE_ENV=”production” (可以无引号)
  • echo 显示某个环境变量值 echo $NODE_ENV
  • env 显示所有环境变量
  • set 显示本地定义的shell变量
  • unset 清除环境变量 unset NODE_ENV
  • readonly 设置只读环境变量 readonly HELLO
1
2
3
4
5
6
7
8
9
10
set
#输出
BASH=/bin/bash
...
export NODE_ENV="production"
readonly NODE_ENV #将环境变量NODE_ENV设为只读
unset NODE_ENV
#输出 发现此变量不能被删除
-bash: unset: NODE_ENV: cannot unset: readonly variable