【Linux简单入门】004Linux脚本文件,环境变量
文章目录
以下是关于Linux脚本文件的内容
一. 可执行脚本
1.1 简介
- 脚本Script,是解释执行的程序。
- 常见的三种Linux下的脚本程序:
(1)Shell脚本 *.sh
(2)Python脚本 *.py
(3)Perl脚本 *.pl
- 脚本程序的实质是一个文本文件,且具有可执行权限。
1.2 脚本程序的解释器
- Shell脚本解释器:/bin/sh
- Perl脚本解释器: /bin/perl
- Python脚本解释器:/bin/python3
- 注:执行一个脚本文件以下两种方式等价
./hello.py(即用相对路径指定文件位置)
/home/user_name/learn_test/hello.py (即用绝对路径指定文件位置)
/bin/python3 hello.py- 有个问题,明明终端当前路径和脚本文件所在路径是一样的,为什么不能直接用文件名来执行脚本?
- 这就涉及到了环境变量的概念,后面在了解吧。
二. Shell脚本
2.1 简介
- Shell脚本:用Shell语法写出来的脚本。是Linux自带的脚本语言,相当于Windows下的DOS批处理脚本。
2.2 Shell脚本简单举例
- 编辑一个文本文件,保存为hello.sh
gedit hello.sh
# 内容为
# #!/bin/sh
# echo "hello,Linux!"
- 添加可执行权限
sudo chmod +x hello.sh
- 执行程序
./hello.sh
2.3 细节要点
- 脚本第一行必须要声明解释器。
- 脚本必须有可执行权限。
- 执行程序必须加上路径。
三. Python脚本简单举例
- 编辑一个文本文件,保存为hello.py
gedit hello.py
# 内容为
# #!/bin/python3
# print("hello,Linux!“)
2.添加可执行权限
sudo chmod +x hello.py
- 执行脚本程序
./hello.py
以下是关于环境变量的内容
四. SHELL中的变量
4.1 SHELL简介
- SHELL是一种脚本编程语言,它可以
1.定义变量
2.执行指令echo,ls,cd,cp等
3.if判断逻辑,while循环逻辑
4.自定义函数等
- 但是不推荐刻意学习SHELL,想学脚本语言,不妨学学Python
4.2 SHEEL中的变量
- 编辑一个脚本文件
gedit sheel_test.sh
# #!/bin/sh
# outdir=/opt
# # 定义变量,等号两端不要随意加空格
# echo "output to : ${outdir}"
# ls ${outdir}
# # 使用变量
- outdir就是一个变量,调用变量需要采用
${变量名}
形式,实际上如果已经有了定界符,可以间写成$变量名
,例如,echo $变量名/build/
2.赋予可执行权限并运行
五. 环境变量
5.1 简介
- 环境变量,就是当前环境中的变量。
5.2 定义并查看环境变量
- 定义环境变量
export outdir=/opt
- 显示环境变量
echo ${outdir}
- 查看所有环境变量
printenv
5.3 环境变量的使用
- 可以在SHELL脚本中调用
将前面建立的shell_test.sh脚本中定义变量的语句注释掉,再执行发现仍然是可行的
- 仅可以在当前终端中使用
关闭当前终端,打开一个新终端,再次执行shell_test.sh,不难发现新的环境里没有outdir这个环境变量了。
5.4 小结
- 在命令行中定义的环境变量,只对当前终端有效,关闭终端后,自动消失。
- 如何能让环境变量不消失?引出用户环境变量,系统环境变量。
六. 用户环境变量
6.1 简介
- 用户环境变量:定义在
~/.profile
中的环境变量,定义后在该用户环境下,可一直保存。
- 注:Linux环境下 . 开头的文件均为隐藏文件,可用
ls -la
来显示。
6.2 添加用户环境变量
- 用文本编辑器打开
~/.profile
- 在末尾用
export
添加环境变量,保存并退出。 - 注销,重新登录后生效。
- 原理:用户每次打开终端时,都会自动运行.profile,借着这个特点,每次都可以把环境变量注入到当前终端环境。又因为每个用户都有自己的配置文件 .profile,所以配置只能对当前用户生效。有的Linux发行版使用的是 .bash_profile。
- 有没有办法一次配置所有用户都能用?有,系统环境变量。
- 类似的,Windows系统也分用户环境变量和系统环境变量。
七. 系统环境变量
7.1 简介
- 与用户环境变量的思路是类似的,只不过系统环境变量,定义在
/etc/profile
中,它里面的环境变量对所有用户都有效。
7.2 添加系统环境变量
- 按照上面的经验,只须在/etc/profile文件中定义环境变量即可,但实际上一般是不直接修改/etc/profile的,可以通过在/etc/profile要访问的
/etc/profile.d/
路径下创建脚本,来间接的实现在/etc/profile里配置环境变量,具体执行如下。
- 以root身份创建一个脚本
sudo gedit /etc/profile.d/myporfile.sh
可能还需要对myporfile.sh加可执行权限
2. 定义环境变量
#!/bin/sh
export OUTDIR=/opt
3.注销并重新登录后,系统环境变量生效
八. PATH环境变量
8.1 回顾问题
- 前面曾提出一个问题,为什么明明终端与可执行文件在同一个路径下却还要指定文件路径才能执行?
- 这是因为PATH环境变量在作怪。PATH是最常见的环境变量,用于描述可执行程序的搜索路径。而当前路径大概率是没被包含在PATH变量下,所以不能被系统自动识别。
8.2 PATH环境变量
- 展示PATH环境变量
echo ${PATH}
# 多路径之间用分号隔开,如,/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin
默认地,系统可以从以下目录中搜索可执行程序
/usr/local/bin
/usr/local/sbin
/usr/bin
/usr/sbin
其中,sbin为超级用户root才能执行的程序,/usr/下是系统自带的程序,/usr/local/下是用户安装的程序。
8.3 新增PATH环境变量
- 编辑
/etc/profile.d/myprofile.sh
sudo gedit /etc/profile.d/myprofile.sh
- 设定PATH环境变量,在文件末尾加上以下内容:
#!/bin/sh
export PATH=$PATH:新添加的路径
- 注销,重新登录后环境变量生效。