Linux中,变量名一般是大写的,这是一种约定俗成的做法。
那么什么是环境变量呢???
从字面上理解,环境就是系统运行时,变量就是一个值可变化的量,那么结合到一起,系统在运行时的环境配置,会从某些变量中取值,此时这种变量就叫环境变量。
如果还是没有理解,我们再举一个php项目的例子:
比如有个laravel的项目,我一启动项目,项目运行环境可能依赖于 MySQL ,那么我们肯定是有一个MySQL的连接配置,比如 .env 文件中:
DB_CONNECTION=mysql
DB_HOST=172.29.97.130
DB_PORT=3306
DB_DATABASE=laravel_weibo
DB_USERNAME=junwind
DB_PASSWORD=junwind_123
上面的字段,其实都是我们这个项目运行环境的环境变量,这种环境变量,你当然可以在运行时修改的,但是要明白,修改了会影响到正在运行的环境。
练习:输出当前用户的家目录,当前主机名,用环境变量的方式?
echo $HOME, $HOSTNAME
如何查看Linux系统中有哪些环境变量?
env // 查看所有的环境变量
一些比较重要的环境变量:
问题:同一个环境变量,在不同用户登录下,值是不变吗?
可能会变,也可能不会变。
因为 Linux 是一个多用户,多任务的操作系统, 每个用户都有独立的运行环境。 因此,同一个环境变量,在不同用户身份下,可能是不同的,比如 HOME
echo $HOME
su - xqw
echo $HOME
当然也可能还是相同的:
echo $SHELL
su - xqw
echo $SHELL
问题:我们可以自己创建环境变量吗?
当然可以。
mkdir ~/workdir
WORKDIR=~/workdir // 设置了一个环境变量
echo $WORKDIR
cd $WORKDIR
我们要注意,上面设置的环境变量,只是针对当前用户的bash环境下,别的用户是看不到的,或者说当前用户再开一个bash环境,也是看不到的。
bash // 再开启一个bash环境
echo $WORKDIR // 没有任何内容输出
su xqw
echo $WORKDIR // 其它用户也看不到
说明它的作用范围,仅是当前用户的当前bash下所设置的环境,离开了这个环境,就无法访问到了。
问题:我们怎么把自己设置的环境变量,让其它人也可以看到呢?
export WORKDIR // 将WORKDIR提升为全局变量,这样其他用户,或者当前用户的其他bash环境下,都可以访问了。
bash
echo $WORKDIR
exit
su xqw
echo $WORKDIR
问题:怎么删除一个环境变量?
unset WORKDIR
注意:系统自己的环境变量,可不要删除了,这会导致你的系统出问题的。
问题:重启系统后,发现之前创建的环境变量失效了?
我们上面,都是直接在终端中创建的环境变量,这种能立即生效。 但是当服务器重启后,确实会丢失,因为在终端中创建的,只是存放于内存中的。
所以,我们写到文件中就可以了。
如果是针对某个用户的环境,我们直接写入这个用户家目录下的 .bashrc ,或 .bash_profile 中。
如果是针对所有人的,我们可以写入 /etc/bashrc
注意:写入文件中,并不能立马生效,我们可以用 . .bashrc
或 source .bashrc
来重新加载配置文件,让修改立即生效。