主题 : 求助:运行应用程序的'./'和‘.空格’区别 复制链接 | 浏览器收藏 | 打印
为智能化控制的发展不断努力着!
级别: 侠客
UID: 9957
精华: 0
发帖: 52
金钱: 260 两
威望: 52 点
综合积分: 104 分
注册时间: 2009-10-19
最后登录: 2014-11-18
楼主  发表于: 2011-07-20 22:56

 求助:运行应用程序的'./'和‘.空格’区别

运行应用程序的有时候用'./'和有时候用‘.空格’,而且运行效果不一样。请问两者区别是什么?谢谢
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
1楼  发表于: 2011-07-20 23:10
./test   执行当前目录下的 test 程序,如果 test 程序内改变环境变量不会影响到当前shell会话
. ./test    仍然是 执行当前目录下的 test 程序,但是 test 程序内改变环境变量,会在当前会话中生效

-------

示例:

假设test是一个脚本,内容为:
export AAA=hello

------------

./test
echo $AAA
----------------------> 结果无显示,因为AAA变量只在test脚本内有效


. ./test
echo $AAA
------------------------> 输出hello,即AAA的值
为智能化控制的发展不断努力着!
级别: 侠客
UID: 9957
精华: 0
发帖: 52
金钱: 260 两
威望: 52 点
综合积分: 104 分
注册时间: 2009-10-19
最后登录: 2014-11-18
2楼  发表于: 2011-07-21 08:07

 回 1楼(hacker) 的帖子

hacker大侠,您好。我现在还有个疑问,如下:
我编写了一个最简单的应用程序hello.c,让串口打印些信息即可。然后,在超级终端用'./hello'和' .  hello'运行的结果不一样,后者‘. 空格’无法运行应用程序。麻烦hacker大侠解释下。谢谢
级别: 荣誉会员
UID: 34761
精华: 0
发帖: 1348
金钱: 6835 两
威望: 1367 点
综合积分: 2696 分
注册时间: 2010-12-21
最后登录: 2017-06-02
3楼  发表于: 2011-07-21 13:08
hello 与 ./hello 的区别时, hello会有系统PATH路径中(比如 /bin, /usr/bin/等)查找hello程序并运行,由于你并没有将hello程序放在这些位置,所以当然就会找不到所以运行不了了, 而 ./hello 明确是执行当前目录下的 hello 程序,而hello是在当前目录存在的,所以可以运行