cd /etc/aa/bb/cc可以执行
但是把这条命令写入shell时shell不执行!
这是什么原因呀!
cd /etc/aa/bb/cc可以执行
但是把这条命令写入shell时shell不执行!
这是什么原因呀!
因为,一般我们跑的shell script 是用subshell 去执行的。
从process 的观念来看,是parent process 产生一个child process 去执行,
当child 结束后,会返回parent ,但parent 的环境是不会因child 的改变而改变的。
所谓的环境元数很多,凡举effective id, variable, workding dir 等等...
其中的workding dir ($PWD) 正是楼主的疑问所在:
当用subshell 来跑script 的话,sub shell 的$PWD 会因为cd 而变更,
但当返回primary shell 时,$PWD 是不会变更的。