相思爱文 于 2012-05-07 22:42:47发表:
[i=s] 本帖最后由 相思爱文 于 2012-5-7 22:46 编辑 [/i]直接运行,是在子进程中进行,运行完毕,状态和结果不保留,只返回一个代码表示运行结束。 这就相当于,在shell中运行xterm,打开一个新的终端,在新终端中执行命令,所有的命令只在新终端中有效。而退出xterm后,原shell的当前目录还在原来的目录中。 如果想要让程序中的运行状态和结果在当前shell中保持,要用source或者.(命令为一个点)执行 bash scriptname.sh 在新shell中运行 source scriptname.sh 在当前shell中运行 . scriptname.sh 在当前shell中运行
circletiger 于 2012-04-29 20:47:20发表:
我认为沙发说得有理。
mr_tianwei 于 2012-04-29 20:23:11发表:
3# Guest from 166.111.67.x 你说的太片面了,我遇到的只是一个普通问题
mr_tianwei 于 2012-04-29 20:22:34发表:
2# lykginy 好像不是你说的那种问题,脚本里执行其他命令是可以的啊,比如cat /etcpasswd > . test , ls -l /home 而且退出脚本的话,系统应该自行让父shell产生一个子shell啊
于 2012-04-27 09:43:51发表:
这就是一帮人整天光宣传“linux就是命令” 但却不知道什么是命令 导致的后果
lykginy 于 2012-04-27 07:16:45发表:
直接执行是在子shell中执行,实际上在子shell中的当前目录已经换成了/etc 脚本结束后退出子shell回到当前shell所以好像什么都没发生一样。 你在最后再加个pwd应该可以看到输出 /etc 要在当前shell执行可以用source或者. source scriptname
相思爱文 于 2012-05-07 22:42:47发表:
[i=s] 本帖最后由 相思爱文 于 2012-5-7 22:46 编辑 [/i]
直接运行,是在子进程中进行,运行完毕,状态和结果不保留,只返回一个代码表示运行结束。
这就相当于,在shell中运行xterm,打开一个新的终端,在新终端中执行命令,所有的命令只在新终端中有效。而退出xterm后,原shell的当前目录还在原来的目录中。
如果想要让程序中的运行状态和结果在当前shell中保持,要用source或者.(命令为一个点)执行
bash scriptname.sh 在新shell中运行
source scriptname.sh 在当前shell中运行
. scriptname.sh 在当前shell中运行
circletiger 于 2012-04-29 20:47:20发表:
我认为沙发说得有理。
mr_tianwei 于 2012-04-29 20:23:11发表:
3# Guest from 166.111.67.x
你说的太片面了,我遇到的只是一个普通问题
mr_tianwei 于 2012-04-29 20:22:34发表:
2# lykginy
好像不是你说的那种问题,脚本里执行其他命令是可以的啊,比如cat /etcpasswd > . test , ls -l /home 而且退出脚本的话,系统应该自行让父shell产生一个子shell啊
于 2012-04-27 09:43:51发表:
这就是一帮人整天光宣传“linux就是命令” 但却不知道什么是命令 导致的后果
lykginy 于 2012-04-27 07:16:45发表:
直接执行是在子shell中执行,实际上在子shell中的当前目录已经换成了/etc 脚本结束后退出子shell回到当前shell所以好像什么都没发生一样。
你在最后再加个pwd应该可以看到输出
/etc
要在当前shell执行可以用source或者.
source scriptname