环境变量
Shell脚本中的变量
创建变量
直接赋值即可,当然也可以事先声明一下变量:$ declare tmp
# 正确的赋值
$ tmp=shiyanlou
- 有一点要注意,赋值等号两边不要有空格,因为加上空格后会被认为是在执行一个叫
tmp的命令并且带上了一些参数(=、shiyanlou)
# 错误的赋值
$ tmp = shiyanlou
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oiwmU1eY-1588153183511)(C:\Users\cmn\AppData\Roaming\Typora\typora-user-images\image-20200429125717855.png)]](https://i-blog.csdnimg.cn/blog_migrate/f47d647041559d55e4d4b91e83413276.png)
-
还有一点,变量命名规则:变量名只能是英文字母、数字或者下划线,且不能以数字作为开头。
-
变量是大小写敏感的
读取变量
使用$变量名的方式可以将变量的内容读取出来
比如,要输出刚才tmp变量的内容
$ echo $tmp
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0XgvINB-1588153183518)(C:\Users\cmn\AppData\Roaming\Typora\typora-user-images\image-20200429125925581.png)]](https://i-blog.csdnimg.cn/blog_migrate/9783956207c04c1304946b4fc9f4d3ce.png)
环境变量
-
环境变量的作用域比自定义变量的要大,如 Shell 的环境变量作用于自身和它的子进程。
-
在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置。
-
默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。
-
Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell 中运行的大部分命令都将以 Shell 的子进程的方式运行。

变量作用域
- 当前 Shell 进程私有用户自定义变量,如上面我们创建的
tmp变量,只在当前 Shell 中有效。 - Shell 本身内建的变量。
- 从自定义变量导出的环境变量(子进程中也生效)。
也有三个与上述三种环境变量相关的命令:set,env,export。这三个命令很相似,都是用于打印环境变量信息,区别在于涉及的变量范围不同。详见下表:
| 命 令 | 说 明 |
|---|---|
set | 显示当前 Shell 所有变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。 |
env | 显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。 |
export | 显示从 Shell 中导出成环境变量的变量,也能通过它将自定义变量导出为环境变量。 |
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QB0CRAAW-1588153183525)(https://doc.shiyanlou.com/linux_base/5-3.png)]](https://i-blog.csdnimg.cn/blog_migrate/5ed360b1b3efbdc88c121693ceafa137.png)
关于哪些变量是环境变量,可以简单地理解成在当前进程的子进程有效则为环境变量,否则不是。
我们来做一个实验。
-
直接在shell中定义的变量在当前shell进程的子进程中是用不了的。
-
当使用
$ export 变量名将shell变量导出为环境变量后,在子进程中就可以访问该变量了(作用域扩大)

让环境变量永久生效
按变量的生存周期来划分,Linux 变量可分为两类:
- 永久的:需要修改配置文件,变量永久生效;
- 临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。
这里介绍两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:
# .profile 可以用 ls -a 查看
$ cd /home/shiyanlou
$ ls -a

这个 .profile 只对当前用户永久生效。因为它保存在当前用户的 Home 目录下,当切换用户时,工作目录可能一并被切换到对应的目录中,这个文件就无法生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。
本文深入探讨了Shell脚本中的变量创建与读取方法,包括变量命名规则、赋值注意事项,以及变量作用域的区别。特别讲解了环境变量与自定义变量的差异,如何在子进程中访问这些变量,以及如何让环境变量永久生效。

被折叠的 条评论
为什么被折叠?



