LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1575|回复: 3

执行一个文件setenv.sh时. setenv.sh 与./setenv.sh是不同的,前者是什么意思呢?

[复制链接]
发表于 2009-10-31 20:35:40 | 显示全部楼层 |阅读模式
执行一个文件setenv.sh时. setenv.sh 与./setenv.sh是不同的,前者是什么意思呢?
发表于 2009-10-31 22:56:00 | 显示全部楼层
前者 : = bash setenv.sh
后者 : 或者自己解决命令解释器的定义,比如 #/bin/perl (如果 #/bin/sh 则与 . seten.sh 等效) 或者是二进制执行文件
回复 支持 反对

使用道具 举报

发表于 2009-11-2 11:16:47 | 显示全部楼层
. setenv.sh == source setenv.sh  如在一个脚本中使用,则其中的一些变量,函数等可以导出供后续继续使用
./setenv.sh 执行当前目录下的脚本        因为默认只会执行$PATH下的命令,如果只输入setenv.sh的话会去$PATH下搜索,无果则无法执行。
回复 支持 反对

使用道具 举报

发表于 2009-11-2 11:50:29 | 显示全部楼层
Post by tornadory;2041967
. setenv.sh == source setenv.sh  如在一个脚本中使用,则其中的一些变量,函数等可以导出供后续继续使用


这个解释不对吧


  1. root [ ~ ]0# cat > source.dat << EOF && source source.dat
  2. > echo HelloWorld
  3. > EOF
  4. HelloWorld
  5. root [ ~ ]0#
复制代码


其实 source = C 中的 include
所以 . setenv.sh 等于在当前交互的 shell 中执行 setenv.sh
./setenv.sh 则等于启用一个新的非交互 shell (假设setenv.sh是 #!/bin/bash)
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表