分页: 1 / 1

cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 16:43
riptide2012
这是我的脚本

代码: 全选

#!/bin/bash

script_path="/tmp/__flexcmd.sh"

echo "#! /bin/bash" > "$script_path"
echo "# generated by script" >> "$script_path"
echo $1 | tr  '%' '$' >> "$script_path"
shift 1
source $script_path $@
然后运行

./flexcmd.sh "mkdir -p %1 && cd %1 " aaa

目录有建立,但是没有改变当前目录

然后运行

source /tmp/__flexcmd.sh aaa

是正常的

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 16:56
riptide2012
又试了下,这样执行是正确的 :em20

代码: 全选

. /home/xxxx/flexcmd.sh " mkdir -p %1 &&  cd %1 "  aaa
这之间有有什么差?

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 16:56
枫叶饭团
把./的/去掉再试试

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 17:06
lilydjwg
cd命令结果如我预期,完毕。
建议先看 shell 基础。不对,是进程的基础知识。

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 17:24
riptide2012
lilydjwg 写了:cd命令结果如我预期,完毕。
建议先看 shell 基础。不对,是进程的基础知识。
你的意思是

执行的脚本是一个独立的进程,所以cd的效果terminal里看不到。

. 或则 source 是把脚本读到当前的环境,所以才有效的。

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 17:38
枫叶饭团
riptide2012 写了:
lilydjwg 写了:cd命令结果如我预期,完毕。
建议先看 shell 基础。不对,是进程的基础知识。
你的意思是

执行的脚本是一个独立的进程,所以cd的效果terminal里看不到。

. 或则 source 是把脚本读到当前的环境,所以才有效的。
./会开启子shell

Re: cd命令结果不如预期.... 求解释

发表于 : 2012-03-29 18:00
lilydjwg
riptide2012 写了:
lilydjwg 写了:cd命令结果如我预期,完毕。
建议先看 shell 基础。不对,是进程的基础知识。
你的意思是

执行的脚本是一个独立的进程,所以cd的效果terminal里看不到。

. 或则 source 是把脚本读到当前的环境,所以才有效的。
差不多。

准确地说,是父进程(和你说话的那个 bash)看不到。. 基本上就是省去了你手动把那些代码在命令行上打一遍的过程。