QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1064|回复: 10

Shell 编程的怪事

[复制链接]
发表于 2005-5-18 18:47:08 | 显示全部楼层 |阅读模式
系统是Fedora3
shell 为bash

我在脚本中加入了cd /命令,但执行脚本后,并不切换目录.
还有export 也导不出变量

脚本如下:
#!/bin/bash

export PROJECT=sbc
exoprt PRJROOT=/root/$PROJECT
cd $PRJROOT
发表于 2005-5-18 18:54:09 | 显示全部楼层
cd \ ?
是cd / 吧!
回复

使用道具 举报

 楼主| 发表于 2005-5-18 19:11:52 | 显示全部楼层
不好意思,发帖是打错了.
回复

使用道具 举报

 楼主| 发表于 2005-5-18 19:23:18 | 显示全部楼层
明白了,没有在当前shell下执行.
回复

使用道具 举报

发表于 2005-5-19 10:40:12 | 显示全部楼层
. ./urscript
回复

使用道具 举报

发表于 2005-5-19 12:13:19 | 显示全部楼层
. ./script
source ./script
exec ./script
回复

使用道具 举报

发表于 2005-6-14 18:06:35 | 显示全部楼层
用./script的话,里面的命令是在子进程里执行的,执行完后回到当前状态。
可以试试cd $PRJROOT;ls
你会看到能列出目录里的内容,但是从表面看来你并没有change directory..
另,推荐一本好书:《学习bash》
斑竹的个人小站里好象没有这本书,呵呵,很不错的。
回复

使用道具 举报

发表于 2005-6-14 20:08:37 | 显示全部楼层
exec ./script ? 这也成?
回复

使用道具 举报

发表于 2005-6-15 21:24:08 | 显示全部楼层
[quote:cee4ebbb0f="kornlee"]exec ./script ? 这也成?[/quote]
呵呵,貌似不可以执行就退出了喽
回复

使用道具 举报

发表于 2005-6-20 15:04:24 | 显示全部楼层
我以前也碰到过这个问题,后来才明白,CD的确是切换目录了,但是,当SCRIPT结束以后返回到SCRIPT开始前的环境了。怎么说呢,就像你在命令行里打出(CD /USR; LS)所得到的结果是一样的,的确切换目录并且完成工作了:)
回复

使用道具 举报

发表于 2005-6-20 16:40:17 | 显示全部楼层
./script 是在一个子shell中执行的
. ./script 在当前shell中执行
source ./script 和上面一样
exec ./script  在当前shell中执行,执行完毕后关闭当前shell
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-7-8 13:57 , Processed in 0.055782 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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