1:全局环境变量

  1.1:查看全局变量 printenv/env

yusuwudeMacBook-Pro:bin yusuwu$ printenv
TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
...
SHLVL=1
LOGNAME=yusuwu
_=/usr/bin/printenv
yusuwudeMacBook-Pro:bin yusuwu$ 

  1.2:显示个别环境变量的值 printenv EnvironmentVariableName /echo $EnvironmentVariableName

yusuwudeMacBook-Pro:bin yusuwu$ printenv HOME
/Users/yusuwu
yusuwudeMacBook-Pro:bin yusuwu$ env HOME
env: HOME: No such file or directory
yusuwudeMacBook-Pro:bin yusuwu$ echo $HOME
/Users/yusuwu
yusuwudeMacBook-Pro:bin yusuwu$ 

  1.3:全局变量在子shell中通用

yusuwudeMacBook-Pro:bin yusuwu$ bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $HOME
/Users/yusuwu
bash-3.2$ exit
exit
yusuwudeMacBook-Pro:bin yusuwu$ 

2:局部环境变量

  2.1查看局部变量

遗憾的是在linux系统中并没有一个只显示局部变量的命令,set命令会显示某个特定进程设置的所有环境变量,包括局部变量,全局变量以及用户自定义变量.

  2.2:设置用户自定义变量

yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ lala=hello
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello
yusuwudeMacBook-Pro:bin yusuwu$ lala=hello world
-bash: world: command not found
yusuwudeMacBook-Pro:bin yusuwu$ lala="hello world"
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello world
yusuwudeMacBook-Pro:bin yusuwu$ lala= "hello ysw"
-bash: hello ysw: command not found
yusuwudeMacBook-Pro:bin yusuwu$ lala ="hello ysw"
-bash: lala: command not found
yusuwudeMacBook-Pro:bin yusuwu$ lala="hello ysw"
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ /bin/bash 

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $lala

bash-3.2$ exit
exit
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw

通过上面代码可知:

[1]:定义局部变量:变量名=变量值

[2]:变量名,等号和值之间不能有空格,如果在赋值表达式中加上了空格,bash shell 就会把值当成一个单独的命令.

[3]:如果要给变量赋给一个有空格的值,必须用引号来界定字符串的首尾.

[4]:局部变量无法在子shell中使用.

3:设置去全局变量

  3.1:在设定全局环境变量的进程所创建的子进程中,该变量都是可见的.创建全局环境变量的方法是先创建一个局部环境变量,然后将它导出到全局环境中.

这个过程通过export命令来完成,变量名前面不需要加$.

yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ lala="hello ysw"
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ export lala
yusuwudeMacBook-Pro:bin yusuwu$ bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $lala
hello ysw
bash-3.2$ exit
exit
yusuwudeMacBook-Pro:bin yusuwu$ unset lala
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ 

  3.2:子shell无法使用exprot命令来改变父shell中全局环境变量的值

yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ lala="hello ysw"
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ export lala
yusuwudeMacBook-Pro:bin yusuwu$ bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $lala
hello ysw
bash-3.2$ lala="hello yusuwu"
bash-3.2$ echo $lala
hello yusuwu
bash-3.2$ export lala
bash-3.2$ echo $lala
hello yusuwu
bash-3.2$ exit
exit
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ bash

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $lala
hello ysw
bash-3.2$ exit
exit
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ unset lala
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ 

  3.3:删除环境变量 unset environmentVariable

yusuwudeMacBook-Pro:bin yusuwu$ echo $lala
hello ysw
yusuwudeMacBook-Pro:bin yusuwu$ unset lala
yusuwudeMacBook-Pro:bin yusuwu$ echo $lala

yusuwudeMacBook-Pro:bin yusuwu$ 

 

posted on 2020-05-16 21:54  曾经那个少年  阅读(468)  评论(0编辑  收藏  举报