Mot*_*001 6 shell path environment-variables variable
$ unset foo
$ unset bar
$ echo $foo
$ echo $bar
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ foo=a
$ bar=b
$ export bar
$ echo $foo
a
$ echo $bar
b
$ PATH=
$ echo $PATH
$ /bin/bash
bash: lesspipe: No such file or directory
bash: dircolors: No such file or directory
bash: ls: No such file or directory
$ echo $foo
$ echo $bar
b
$ echo $PATH
$
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,更改$PATH会影响子shell,而另一个变量需要被export编辑。为什么?
Ste*_*ris 10
实际上有两种类型的变量:
为了使事情更复杂,它们看起来都一样,并且可以使用export命令将 shell 变量转换为环境变量。
该env命令将显示当前的环境变量集。
$ myvar=100
$ env | grep myvar
$ export myvar
$ env | grep myvar
myvar=100
Run Code Online (Sandbox Code Playgroud)
变量也可以在命令的生命周期内临时导出。
$ env | grep anothervar
$ anothervar=100 env | grep anothervar
anothervar=100
$ env | grep anothervar
$
Run Code Online (Sandbox Code Playgroud)
当 shell 启动时,它会继承许多环境变量(可能为零)。
启动脚本(例如.bash_profile,.bashrc目录中的/etc文件)也可以设置和导出变量。
最后,如果环境为空,shell 本身可能会为环境变量设置一个默认数字。例如
$ PATH=foo /bin/bash -c 'echo $PATH'
foo
$ PATH= /bin/bash -c 'echo $PATH'
$ unset PATH
$ /bin/bash -c 'echo $PATH'
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:.
Run Code Online (Sandbox Code Playgroud)