免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2375 | 回复: 11
打印 上一主题 下一主题

问个关于子进程的超简单问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-11 14:27 |只看该作者 |倒序浏览
比如我在脚本里写
#!/bin/bash
cd /mnt
就这一句话然后在外面执行它,执行后是不会进到mnt下的,我知道是因为脚本在子进程中执行。但我希望执行这个脚本后就能够进到mnt下去,请教下前辈们怎么写(在外面用source 脚本名这我知道,但我希望直接执行脚本可以达到效果),万分感谢!

论坛徽章:
0
2 [报告]
发表于 2010-02-11 14:33 |只看该作者
可以这样  .  file    那种直接运行脚本名酒调用脚本的,一般都是把./写入环境变量了。这样非常不安全所以不建议这么设定。

论坛徽章:
0
3 [报告]
发表于 2010-02-11 14:40 |只看该作者

。。。。。。
简单 在shell下这样运行:
./script && cd /mnt
or
./script ; cd /mnt
or
./script;echo faint haha;cd /mnt

论坛徽章:
0
4 [报告]
发表于 2010-02-11 14:43 |只看该作者
楼上的大大,我试了下真的可以,请问下为什么. file就好使了?这是什么道理,这样写就不在子进程执行了吗?还有为什么这么写./就不写进环境变量呢。

论坛徽章:
0
5 [报告]
发表于 2010-02-11 14:46 |只看该作者
截取胜利果实了gaga
source 和 .
有区别吗?

论坛徽章:
0
6 [报告]
发表于 2010-02-11 14:48 |只看该作者
回复 4# dy0813


    那个和source是一样的。至于./是执行一个文件的意思~如果你把它写入环境变量的话。那么你只需要输入文件名就能执行文件了~假如一个黑客文件把文件名伪装成命令的名字比如ls,你不知道的情况下。执行了。其实是执行了这个文件。不是这个命令。 但是不把./写入环境变量的话,就必须用./file才能执行文件,比较安全。不知道我表述的是否明白

论坛徽章:
0
7 [报告]
发表于 2010-02-11 14:48 |只看该作者
回复 1# dy0813


    source

论坛徽章:
0
8 [报告]
发表于 2010-02-11 14:55 |只看该作者
回复 6# iori809


    我觉得你就算把./写入PATH,你直接执行 这个脚本也不会进去mnt 下
比如
  1. [14:19:18 pana ~ 3.2]#echo $PATH
  2. /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/pana/bin:/home/pana:/sbin:.
  3. [14:19:24 pana ~ 3.2]#more aa
  4. cd /mnt
  5. [14:19:34 pana ~ 3.2]#aa
  6. [14:19:36 pana ~ 3.2]#pwd
  7. /home/pana
  8. [14:19:39 pana ~ 3.2]#
复制代码

论坛徽章:
0
9 [报告]
发表于 2010-02-11 15:00 |只看该作者
回复 8# 709101040516


    对~
   sh 和 ./执行也是产生子进程的,只有source和. 执行不产生子进程。但是如果把./写入环境变量直接运行文件名就能执行了,比较危险。我想说的是这个

论坛徽章:
0
10 [报告]
发表于 2010-02-11 15:01 |只看该作者
回复 9# iori809


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP