|
发表于 2007-4-9 09:19:12
|
显示全部楼层
Post by adamzyg
那当然不行了。因为你在运行这个脚本时shell会新建一个子shell来执行它。没错在子shell执行时是改变了目录但是当子shell运行完退出时当然它的一系列变量都over了。通俗的说是:儿子能继承父亲的相关特征,却不能影响或者说是改变父亲的特征。
你可以这样看看$type cd 结果应该是:cd is a shell builtin
正是因为它是个内部命令,所以才可以改变用户的环境。而外部命令是由shell的子进程执行的,子进程当然是不能改变父进程的环境的。这也就能证明为什么会有像cd,alias,source(.)之类的内部命令了。呵呵,不知道说明白咧没有,你可以查查《高级Bash脚本编程指南》http://www.linuxsir.cn/bbs/showthread.php?t=256887
原来如此啊,终于明白了。thanks! |
|