LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1242|回复: 8

为啥我的脚本中用cd不能改变目录

[复制链接]
发表于 2007-7-16 15:38:19 | 显示全部楼层 |阅读模式
最近在练习bash,需要在一个脚本中用cd命令改变shell的目录,发现脚本执行完成后,当前的目录没有改变。请教各位高手怎么办?
例如:
当前的目录是/root/myshell
脚本是
#!/bin/bash
cd /root/
exit 0
本来目的是脚本执行后转到root目录,但是发现脚本执行后,虽然脚本的返回码是0,表示执行正确,但是当前目录仍然是/root/myshell
请教高手这是为什么?怎么办?
发表于 2007-7-16 17:34:25 | 显示全部楼层
source yourscript 或者 . yourscript
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-16 17:37:25 | 显示全部楼层
这是为什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-16 17:48:19 | 显示全部楼层
好像不行。这样的话,终端就关闭了。
请将清楚点,谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-16 17:48:19 | 显示全部楼层
好像不行。这样的话,终端就关闭了。
请将清楚点,谢了
回复 支持 反对

使用道具 举报

发表于 2007-7-16 17:48:34 | 显示全部楼层
不用source或.的话相当于在子进程中执行,结果不会影响到父进程
回复 支持 反对

使用道具 举报

发表于 2007-7-16 17:50:07 | 显示全部楼层
不要加exit 0,source script,这就是为什么cd必须是shell内建命令的原因。
回复 支持 反对

使用道具 举报

发表于 2007-7-25 16:06:09 | 显示全部楼层
不是没有改变,只是你的脚本在cd **后,又退回了原目录
回复 支持 反对

使用道具 举报

发表于 2007-7-25 17:10:57 | 显示全部楼层
bash opens a separate thread which runs in its own environment.

a similar demo is:

[wangyb@myhost ~]$ (cd /tmp/; pwd; echo EXITING);pwd
/tmp
EXITING
/home/wangyb
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表