shell语法+crontab实战
crontab 定时任务
0. 三方相关文档
Linux shell bash 内置变量参考 | Tengwait
shell 脚本编程
经典的 Shell 十三问
Bash 脚本中的错误处理
一篇教会你写 90% 的 Shell 脚本
1.shell脚本入门
1.1 什么是shell和shell脚本
1.2 shell脚本语言的种类及优势
1.3 shell脚本的开发的基本规范
2.shell变量
2.1 环境变量与普通变量
本文档发布于https://mrdoc.fun
-
+
首页
2.1 环境变量与普通变量
# 变量类型 >i 变量可分为两类:环境变量(全局变量)和普通变量(局部变量)。 - 环境变量: 也可称为全局变量,可以在创建它们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可分为自定义环境变量和bash内置的环境变量。 - 普通变量: 也可称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用。普通变量一般由开发者在开发脚本程序时创建。 # 环境变量 环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell 命令的正确执行。Shell 通过环境变量来确定**登录用户名**、**命令路径**、**终端类型**、 **登录目录**等,所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器、Shell脚本和各类应用。 环境变量可以在命令行中设置和创建,但用户退出命令行时这些变量值就会丢失, 因此,如果希望永久保存环境变量,可在用户家目录下的`.bash_ profile` 或 `.bashrc`(非用户登录模式特有,例如远程 SSH) 文件中,或者全局配置/ete/bashre(非用户登录模式特有,例如远程 SSH) 或 `/ete/profile` 文件中定义。在将环境变量放入上述的文件中后, 每次用户登录时这些变量都将被初始化。 按照系统规范,所有**环境变量的名字均采用大写形式**。在将环境变量应用于用户进程程序之前,都应该用 export 命令导出定义,例如:正确的环境变最定义方法为 `export OLDGIRL=1`。 有一些环境变量,比如 HOME、 PATH、 SHELL、 UID、 USER 等,在用户登录之前就已经被 /bin/login 程序设置好了。通常环境变量被定义并保存在用户家目录下的 `.bash_ profile` 文件或全局的配置文件 `/etc/profile` 中。 在查看设置的变量时,有3个命令可以显示变量的值:set、env 和 declare(替代早期的typeset)。set 命令输出所有的变量,包括全局变量和局部变量;env 命令只显示全局变量;declare 命令输出所有的变量、两数、整数和已经导出的变量。set -o 命令显示 bash Shell 的所有参数配置信息。 ## 自定义环境变量 ### 1. 设置环境变量 如果想要设置环境变量,就要在给变量赋值之后或在设置变量时使用 export 命令具体设置见下文的示例。其实,除了 export 命令,带-x选项的 declare 内置命令也可以完成同样的功能(注意:此处不要在变量名前面加$)。 export 命令和 declare 命令的格式如下: ①export 交量名 =value ②变量名 =value;export 变量名 ③ declare -x 变量名=value (1) 用户的环境变量配置,比较常见的是用户家目录下的 .bashrc 和 .bash_profile (2)全局环境变量的配置 常见的全局环境变量的配置文件如下: ``` /etc/profile /etc/bashrc =推荐在此文件中优先设靈 /etc/profile.d/ ``` 若要在登录后初始化或显示加载内容,则把脚本文件放在 /etc/profile.d/ 下即可(无须加执行权限)。 ### 2. 设置登录提示的两种方式 第一种是在/etc/motd 里增加提示的字符串,如下: ``` cat /etc/motd #<===文件里仅为字符車内容 welcome to oldboy linux She1l training. ``` 登录后显示内容如下: ``` Last login : Pri Nov 7 15 :36 :56 2016 from 10.0.0.100 welcome to oldboy linux Shell training. ``` 第二种是在 /etc/profile.d/ 下面增加如下脚本。 ``` # cat Jetc/profile.d/oldboy.sh #<== 这里是牌本的内容 echo "Here is oldboy training" ``` ### 3. 显示与取消环境变量 1.通过 echo 或 printf 命令打印环境变量 下面我们先来看看常见的系统环境变最。 ``` $HOME:用户登录时进入的目录。 $UID:当前用户的 UID(用户标识),相当于 id-u。 $PWD:当前工作目录的绝对路径名。 $SHELL:当前 SHELL。 $USER:当前用户。 ...... ``` 2.用 env 或 set 显示默认的环境变量 3.用 unset 消除本地变量和环境变量 **环境变量的知识小结:** 变量名通常要大写。 变量可以在自身的 Shell 及子 Shell 中使用。 常用 export 来定义环境变量。 执行 env 默认可以显示所有的环境变量名称及对应的值。 輸出时用“$变量名”,取消时用“unset 变量名”。 书写 crond 定时任务时要注意,脚本要用到的环境变量最好先在所执行的 Shell 脚本中重新定义。 如果希望环境变量永久生效,則可以将其放在用户环境变量文件或全局环境变量文件里。 ### 4. 环境变量初始化与对应文件的生效顺序 在登录 Linux 系统并启动一个 bash shell 时,默认情况下 bash 会在若干个文件中查找环境变量的设置。这些文件可统称为系统环境文件。bash 检查的环境变量文件的情况取决于系统运行 Shell 的方式。系统运行 Shell 的方式一般有3种: 1)通过系统用户登录后默认运行的 Shell。 2)非登录交互式运行 Shell。 3) 执行脚本运行非交互式 Shell。 当用户登录 Linux 系统时,Shell 会作为登录 Shell 启动。此时的登录 Shell 加载环境变量的顺序如图3-1所示。 用户登录系统后首先会加载 /etc/profile 全局环境变量文件,这是 Linux 系统上默认的Shell 主环境变量文件。系统上每个用户登录都会加载这个文件。 当加载完 /etc/profile 文件后,才会执行 /etc/profile.d 目录下的脚本文件,这个目录下的脚本文件有很多,例如:系统的字符集设置 (/etc/sysconfig/i18n) 等,在后文开发跳板机案例里,我们也把脚本的起始加载放到这个目录下,以便用户登录后即刻运行脚本。 之后开始运行 $HOME/.bash_profile(用户环境变量文件),在这个文件中,又会去找 $HOME/ bashrc(用户环境变量文件),如果有,則执行,如果没有,则不执行。在 $HOME/.bashrc 文件中又会去找 /etc/bashrc(全局环境变量文件),如果有,则执行,如果没有,则不执行。 如果用户的 Shell 不是登录时启动的(比如手动敲下 bash 时启动或者其他不需要输入密码的登录及远程 SSH 连接情况),那么这种非登录 Shell 只会加载 $HOME/.bashrc (用户环境变量文件),并会去找/etc/bashrc(全局环境变量文件)。因此如果希望在非登录 Shell下也可读到设置的环境变量等内容,就需要将变量设定等写入 $HOME/.bashrc 或者 /etc/bashrc,而不是 $HOME/.bash_profile 或 /etc/profile。 # 普通变量
Jonny
June 1, 2022, 7:29 p.m.
1159
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
如遇文档失效,可评论告知,便后续更新!
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
【阿里云】2核2G云服务器新老同享 99元/年,续费同价(不要✓自动续费)
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期