13.1.1 局部变量

所谓局部变量就是指在某个Shell中生效的变量,对其他Shell来说无效,而且会随着当前Shell的消失而消失,局部变量的作用域被限定在声明它们的Shell中,可以使用local内建命令来“显式”的声明局部变量,但仅限于函数内使用。换言之,每个Shell都有自己的变量空间,彼此互不影响。而环境变量不仅仅是对于该Shell生效,对其子Shell也同样生效。

想要进一步了解局部变量在不同Shell中的互不相关性,可在图形界面下同时打开两个Shell,或使用两个终端远程连接到服务器(SSH),在其中的一个Shell命令行中定义一个变量I并赋值为1,然后打印,这时在同一个Shell窗口中是可正确打印变量I的值的;与此同时,新打开一个Shell窗口,同样打印变量I的值,但结果却为空,如图13-1所示。这说明局部变量仅在定义该变量的Shell中生效,而对其他Shell没有影响。这很好理解,就像小王家和小徐家都有一部电视机(变量名相同),但是同一时刻小王家和小徐家的电视中播放的节目可以是不同的(变量值不同)。