变数的有效范围
虾密??变数也有使用的‘范围’?没错啊~我们在上头的 export 指令说明中,就提到了这个概念了。如果在跑程式的时候,有父程序与子程序的不同程序关系时, 则‘变数’可否被引用是 export 有关。被 export 后的变数,我们可以称他为‘环境变数’! 环境变数可以被子程序所引用,但是其他的自订变数内容就不会存在于子程序中。也就是说: 我们自行设定的变数,只在目前这个 shell 环境当中存在, 在子程序中将不会存在此一变数。除非使用 export 将自订变数变成环境变数。
其实除了 shell 的父、子程序外,在脚本( scripts )的编写当中,由于有的软体会使用到 2 个以上的 scripts 做为一个完整的套件!也就是说,假如你有两支程式,一支为 scripts1.sh 以及 scripts2.sh ,而 scripts2.sh 会去引用 scripts1.sh 的变数,这个时候,嘿嘿!你在 scripts1.sh 当中设定的变数请‘千万记得以 export 设定’, 否则你的变数将无法在两个 scripts 之间互相被引用喔!当这个 scripts 执行完毕之后,刚刚在 scripts 当中设定的变数也就‘失效了!’。
其实,要瞭解不同程序之间变数的变换,应该要先瞭解‘程序’的概念比较好, 但是我们还没有讲到.....没关系~等你念到程序章节后,还可以再回来好好的看一看。 基本上,环境变数可以让子程序继续引用的原因,是因为:
* 当启动一个 shell ,作业系统分配一记忆区块给 shell 使用,此区域之变数可以让子程序存取;
* 利用 export 功能,可以让变数的内容写到上述的记忆区块当中(环境变数);
* 当载入另一个 shell 时 (亦即启动子程序,而离开原本的父程序了),子 shell 可以将父 shell 的环境变数所在的记忆区块导入自己的环境变数区块当中。
透过这样的关系,我们就可以让某些变数可以在相关的程序之间存在,以帮助自己更方便的操作环境喔!
阅读(591) | 评论(0) | 转发(0) |