Genus 发表于 2005-5-18 18:47:08

Shell 编程的怪事

系统是Fedora3
shell 为bash

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

脚本如下:
#!/bin/bash

export PROJECT=sbc
exoprt PRJROOT=/root/$PROJECT
cd $PRJROOT

楚狂生 发表于 2005-5-18 18:54:09

cd \ ?
是cd / 吧!

Genus 发表于 2005-5-18 19:11:52

不好意思,发帖是打错了.

Genus 发表于 2005-5-18 19:23:18

明白了,没有在当前shell下执行.

kornlee 发表于 2005-5-19 10:40:12

. ./urscript

zhy2111314 发表于 2005-5-19 12:13:19

. ./script
source ./script
exec ./script

jovesky 发表于 2005-6-14 18:06:35

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

kornlee 发表于 2005-6-14 20:08:37

exec ./script ? 这也成?

demonlj 发表于 2005-6-15 21:24:08

exec ./script ? 这也成?
呵呵,貌似不可以执行就退出了喽

shannleon 发表于 2005-6-20 15:04:24

我以前也碰到过这个问题,后来才明白,CD的确是切换目录了,但是,当SCRIPT结束以后返回到SCRIPT开始前的环境了。怎么说呢,就像你在命令行里打出(CD /USR; LS)所得到的结果是一样的,的确切换目录并且完成工作了:)

shenpipi 发表于 2005-6-20 16:40:17

./script 是在一个子shell中执行的
. ./script 在当前shell中执行
source ./script 和上面一样
exec ./script在当前shell中执行,执行完毕后关闭当前shell
页: [1]
查看完整版本: Shell 编程的怪事