于 2014-03-28 13:52:26发表:
source file.sh
gxf 于 2007-12-29 22:53:56发表:
"跳转目录"只是在子shell存活期间生效,也就是说你的shell脚本可能需要切换到其他目录但是这并不影响当前的shell(父shell)的目录。想想你在编译安装一个软件的时候是不是看到了许多切换目录的信息呢,但是软件安装完之后你的当前目录还是没变啊。你看一段小代码就明白了:[code]#! /bin/bash cd /etc mypath=`pwd` echo "$mypath" #说明在子shell执行过程中却确实切换了目录[/code]所以你要明白shell的工作机制,最好看看进程相关的知识[ 本帖最后由 gxf 于 2007-12-29 22:58 编辑 ]
tearring 于 2007-12-29 22:42:30发表:
引用:原帖由 gxf 于 2007-12-29 22:08 发表 这是因为你的脚本是由shell终端fork产生的子shell执行的,所以脚本执行完毕子shell也结束,因而返回父shell也就是当前的终端
gxf 于 2007-12-29 22:08:35发表:
这是因为你的脚本是由shell终端fork产生的子shell执行的,所以脚本执行完毕子shell也结束,因而返回父shell也就是当前的终端
yezhulin1982 于 2007-12-29 20:16:09发表:
. ./scriptname或source scriptname
于 2014-03-28 13:52:26发表:
source file.sh
gxf 于 2007-12-29 22:53:56发表:
"跳转目录"只是在子shell存活期间生效,也就是说你的shell脚本可能需要切换到其他目录但是这并不影响当前的shell(父shell)的目录。想想你在编译安装一个软件的时候是不是看到了许多切换目录的信息呢,但是软件安装完之后你的当前目录还是没变啊。你看一段小代码就明白了:[code]#! /bin/bash
cd /etc
mypath=`pwd`
echo "$mypath" #说明在子shell执行过程中却确实切换了目录[/code]所以你要明白shell的工作机制,最好看看进程相关的知识
[ 本帖最后由 gxf 于 2007-12-29 22:58 编辑 ]
tearring 于 2007-12-29 22:42:30发表:
那该如何执行,跳转目录?
gxf 于 2007-12-29 22:08:35发表:
这是因为你的脚本是由shell终端fork产生的子shell执行的,所以脚本执行完毕子shell也结束,因而返回父shell也就是当前的终端
yezhulin1982 于 2007-12-29 20:16:09发表:
. ./scriptname或source scriptname