SHELL中的变量
什么是环境变量,如何设置环境变量
最典型的环境变量,PATH , JAVA_HOME
SHELL,是一个脚本编程语言
1 定义变量
2 执行命令 echo ls cd cp
3 if 判断逻辑, while循环逻辑
4 自定义的函数 …
提示:如果想学一门脚本语言,可以选择 Python
示例:
#!/bin/sh
# 定义变量
OUTDIR=/opt
# 使用变量
echo "output to : ${OUTDIR}"
ls ${OUTDIR}
要点与细节
1 定义一个变量
NAME=value
等号左右两侧不要多加空格
2 使用一个变量
${NAME}
如果已经有了定界符,则可以简写为 $NAME
例如 echo $NAME/build/
环境变量
环境变量,就是存在当前环境中的变量
无论Linux ,还是Windows,都有环境变量
比如,最常用的环境变量 PATH, JAVA_HOME
定义环境变量
export OUTDIR=/opt/
显示环境变量
echo ${OUTDIR}
查看所有环境变量
printenv
环境变量的使用:
- 可以在当前终端中使用
- 可以在 SHELL 脚本中调用
思考
在命令行中定义的环境变量,只对当前SHELL终端有效
当关闭终端后,重启后就消失了
思考:有没有办法让一个环境变量不消失?
用户环境变量
用户环境变量:定义在 ~/.profile 中
在主目录下
ls -la
其中,a 表示 all ,显示所有文件
注:在Linux下,以 . 开头的文件为 隐藏文件
1 用文本编辑器打开 ~/. profile
gedit ~/.profile
2 添加
export JAVA_HOME=/opt/jdk1.8
保存并关闭
3 注销,重新登录后生效
echo $JAVA_HOME
原理:当用户打开终端时,会自动运行 .profile ,将变量注入到当前环境中。
要点与细节
1 以点号 . 开头的文件为隐藏文件
ls -a 查看所有文件
2 此配置只对当前用户有效
因为每个用户都有自己的配置文件 .profile
3 有的Linux系统上,使用 .bash_profile
系统环境变量
系统环境变量:定义在 /etc/profile 中
此中的环境变量对 所有用户 有效
以 root 身份执行
gedit /etc/profile
但是,一般不直接修改 /etc/profile
而是在 /etc/profile.d/ 创建一个自定义的脚本
演示:
1 用 gedit 创建一个脚本
gedit /etc/profile.d/myprofile.sh
2 定义环境变量
export TOMCAT=/opt/tomcat
3 注销并重新登录
重新登录后,环境变量生效
PATH 环境变量
先来看一个问题:创建一个可执行脚本 hello.sh
直接执行:
明明就在当前目录下,为什么提示找不到?
PATH,最常见的一个环境变量
用于描述可执行程序的搜索路径
echo $PATH
多个路径之间以冒号分隔
usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
默认地,系统从以下目录中搜索可执行程序
/usr/bin 比如,/usr/bin/tar
/usr/sbin 比如,/usr/sbin/useradd
/usr/local/bin
/usr/local/sbin
其中, sbin 为超级用户 root 才能执行的程序
/usr/ 下系统自带的程序, /usr/local/ 是用户安装的程序
演示:修改PATH环境变量。。。
1 编辑 /etc/profile.d/myprofile.sh
设定 PATH 环境变量
export PATH=$PATH:/opt/tomcat/bin
2 注销,重新登录后生效