Linux
环境变量,environment variables,在操作系统及用户应用间都有极大的作用。

1、printenv

通过 **printenv** 可获得系统的所有环境变量。

  1. $ printenv
  2. LANG=zh_CN.UTF-8
  3. HISTCONTROL=ignoredups
  4. HISTTIMEFORMAT=%F %T fcant
  5. HOSTNAME=training
  6. which_declare=declare -f
  7. XDG_SESSION_ID=204
  8. USER=fcant
  9. PWD=/home/fcant
  10. HOME=/home/fcant
  11. SSH_TTY=/dev/pts/4
  12. MAIL=/var/spool/mail/fcant
  13. TERM=screen-256color
  14. SHELL=/bin/bash
  15. SHLVL=1
  16. LOGNAME=fcant
  17. DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
  18. XDG_RUNTIME_DIR=/run/user/1000
  19. PATH=/home/fcant/.local/bin:/home/fcant/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
  20. HISTSIZE=10000
  21. _=/usr/bin/env

从以上命令输出,可以看出 「环境变量命名一般为全部大写」
也可以通过 **printenv**,来获得某个环境变量的值。

$ printenv HOME
/home/fcant

除此之外,通过 **$var** 或者 **${var}** 可以取得环境变量,并通过 **echo** 进行打印。

$ echo $HOME
/home/fcant

$ echo ${HOME}

2、$HOME

**$HOME**,当前用户目录,也就是 ~ 目录。

$ echo $HOME
/home/fcant

# 以下两个命令是等价的
$ cd $HOME
$ cd ~

3、$USER

**$USER**,即当前用户名。

$ echo $USER
fcant

# 该命令也可获得当前用户名
$ id --user --name
fcant

4、$SHELL

在 Linux 中,有许多的 Shell 工具,比如:

  • bash
  • zsh
  • sh

bash 是 linux 系统内置的 shell,可以通过环境变量 SHELL 获得当前是哪一个 SHELL。

$ echo $SHELL
/bin/bash

5、$PATH

PATH

6、export

通过 **export** 可配置环境变量

$ export A=3
$ echo $A
3
$
$ export NODE_ENV=production
$ echo $NODE_ENV
production

「如果需要使得配置的环境变量永久有效,需要写入 ~/.bashrc 或者 ~/.zshrc」

7、前置环境变量

在执行命令之前置入环境变量,可以用以指定仅在该命令中有效的环境变量。

# 该环境变量仅在当前命令中有效
$ NODE_ENV=production printenv NODE_ENV
production

# 没有输出
$ printenv NODE_ENV

在前端中大量使用,如

$ NODE_ENV=production npm run build