问题来自于鸟哥的书第13章"学习shell script"中第一个示例中的两句话:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin
export PATH #主要是这句
我知道的是:
- 环境变量是全局变量(关闭当前的shell后重开shell时变量仍有效),
自定义变量是局部变量(只针对当前shell有效,关闭后失效) - PATH变量的设置是为了在shell中指定命令执行路径
- shell script是在当前shell中被调用的,所以无论PATH是环境变量还是自定义变量,执行shell script的时候,PATH肯定是按照script中的样子设置好的
我的推断是:
- 如果shell script
仅对PATH变量有要求
,那么定义自定义变量就可以了,无需设置环境变量,也就是说export那一行可以删除
我这么想对吗?
设置环境变量的目的是为了能让该变量对任何一个子进程(自当前的 shell 实例创建的,也就是当前环境内启动的子进程,并不只有你说的重启 shell——当然它自身也会受益到)可以访问到。
如果该变量仅在当前脚本内使用,的确没有必要非得 export
,但是就你举的例子而言,PATH
显然是希望其他子进程也能够访问到的,因此才会使用 export
。
所以你的推断是正确的,明白了 export
的使用场景就知道何时可以不用。