shell script对于PATH变量而言能否只设置自定义变量而非环境变量?

问题来自于鸟哥的书第13章"学习shell script"中第一个示例中的两句话:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin
export PATH    #主要是这句

我知道的是:

  1. 环境变量是全局变量(关闭当前的shell后重开shell时变量仍有效),
    自定义变量是局部变量(只针对当前shell有效,关闭后失效)
  2. PATH变量的设置是为了在shell中指定命令执行路径
  3. shell script是在当前shell中被调用的,所以无论PATH是环境变量还是自定义变量,执行shell script的时候,PATH肯定是按照script中的样子设置好的

我的推断是:

  • 如果shell script仅对PATH变量有要求,那么定义自定义变量就可以了,无需设置环境变量,也就是说export那一行可以删除

我这么想对吗?

阅读 4.7k
1 个回答

设置环境变量的目的是为了能让该变量对任何一个子进程(自当前的 shell 实例创建的,也就是当前环境内启动的子进程,并不只有你说的重启 shell——当然它自身也会受益到)可以访问到。

如果该变量仅在当前脚本内使用,的确没有必要非得 export,但是就你举的例子而言,PATH 显然是希望其他子进程也能够访问到的,因此才会使用 export

所以你的推断是正确的,明白了 export 的使用场景就知道何时可以不用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进