./ 和. 的区别是什么,为什么./不好使啊

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
fandy_meng
帖子: 4
注册时间: 2012-03-17 16:09

./ 和. 的区别是什么,为什么./不好使啊

#1

帖子 fandy_meng » 2012-03-17 16:15

本人超级新手哦
我编写了一个脚本a.sh, ./a.sh 没反应 , . a.sh 运行正常,脚本内容也都执行了,什么情况
我就是写了一个进入桌面的脚本 ./没反应, . 就可以执行,如下图,求高手,求大神指点啊,所有的书上,网上都是写的用./XXX.sh 就能运行
11.png
11.png (8.58 KiB) 查看 1700 次
脚本代码
22.png
22.png (3.85 KiB) 查看 1534 次
谢谢二楼的解释,基本我觉得二楼说的有道理,解释的通
上次由 fandy_meng 在 2012-03-17 22:32,总共编辑 1 次。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: ./ 和. 的区别是什么,为什么./不好使啊

#2

帖子 tusooa » 2012-03-17 16:26

fandy_meng 写了:本人超级新手哦
我编写了一个脚本a.sh, ./a.sh 没反应 , . a.sh 运行正常,脚本内容也都执行了,什么情况
我就是写了一个进入桌面的脚本 ./没反应, . 就可以执行,如下图,求高手,求大神指点啊,所有的书上,网上都是写的用./XXX.sh 就能运行
11.png
你这貌似是执行改变目录的。

. 是在当前shell里执行。就是。相当于把代码直接输到shell里去。
./a.sh,是执行./a.sh这文件。另外开了个shell。

改目录只作用于当前shell的。所以./a.sh不行了。执行完了,那shell就挂了。啥都没了。

代码: 全选

] ls -ld //
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: ./ 和. 的区别是什么,为什么./不好使啊

#3

帖子 自由建客 » 2012-03-17 16:30

命令第一个词总是谓语动词,点斜杆指当前目录,然 a.sh 并未加可执行权(即不可作动词),故无反应。
单纯的一点为匿名命令,多数情况同 source,具体自查。
上次由 自由建客 在 2012-03-17 16:31,总共编辑 1 次。
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: ./ 和. 的区别是什么,为什么./不好使啊

#4

帖子 枫叶饭团 » 2012-03-17 16:31

超级新手就别纠结这种问题 :em05 :em05
fracting
帖子: 278
注册时间: 2009-02-26 1:30

Re: ./ 和. 的区别是什么,为什么./不好使啊

#5

帖子 fracting » 2012-03-17 16:40

fandy_meng 写了:本人超级新手哦
我编写了一个脚本a.sh, ./a.sh 没反应 , . a.sh 运行正常,脚本内容也都执行了,什么情况
我就是写了一个进入桌面的脚本 ./没反应, . 就可以执行,如下图,求高手,求大神指点啊,所有的书上,网上都是写的用./XXX.sh 就能运行
11.png
首先, 你应该把脚本内容贴出来, 别人才能帮你分析.

根据你的截图, 楼上判断你的脚本是用来改变目录的. 假设确实是这样, 那你需要google一下 "bash内置命令" 和 "环境变量" 这两个知识点.

cd命令是一个bash内置命令, 它的作用是修改 $PWD 这个环境变量.

假设我有一个脚本是这样的:
#!/bin/sh
cd /tmp

那么, 当你在终端执行这个脚本的时候, 终端的bash里会产生一个子进程, 子进程调用cd命令修改了子进程本身的PWD变量, 然后子进程就退出了, 父进程的环境变量仍然不会受到干扰, 因此目录不变.

而当你使用 . 或者使用 source 的时候, 情况就不同了, 这两个并不会产生子进程, 因此修改的是自身的环境变量.
http://www.gnu.org/software/bash/manual ... l-Builtins
上次由 fracting 在 2012-03-17 16:43,总共编辑 1 次。
Wine的使用中的一些常见误区:
viewtopic.php?f=121&t=363147

分享Wine调试经验 -- 第二季: Wine Dr.com 中文乱码
viewtopic.php?f=121&t=385111

做一名开源社区的扫地僧(上)
viewtopic.php?f=80&t=389615
fracting
帖子: 278
注册时间: 2009-02-26 1:30

Re: ./ 和. 的区别是什么,为什么./不好使啊

#6

帖子 fracting » 2012-03-17 16:42

自由建客 写了:命令第一个词总是谓语动词,点斜杆指当前目录,然 a.sh 并未加可执行权(即不可作动词),故无反应。
单纯的一点为匿名命令,多数情况同 source,具体自查。
不是权限问题, 因为如果没有可执行权限, shell会报错.
Wine的使用中的一些常见误区:
viewtopic.php?f=121&t=363147

分享Wine调试经验 -- 第二季: Wine Dr.com 中文乱码
viewtopic.php?f=121&t=385111

做一名开源社区的扫地僧(上)
viewtopic.php?f=80&t=389615
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: ./ 和. 的区别是什么,为什么./不好使啊

#7

帖子 自由建客 » 2012-03-17 17:03

fracting 写了:
自由建客 写了:命令第一个词总是谓语动词,点斜杆指当前目录,然 a.sh 并未加可执行权(即不可作动词),故无反应。
单纯的一点为匿名命令,多数情况同 source,具体自查。
不是权限问题, 因为如果没有可执行权限, shell会报错.
还真是!抱歉,在下从未遇见过权限不足问题!
fandy_meng
帖子: 4
注册时间: 2012-03-17 16:09

Re: ./ 和. 的区别是什么,为什么./不好使啊

#8

帖子 fandy_meng » 2012-03-17 17:21

谢谢大家!!!明白了!!!! :em11 :em11 :em11 :em11
fracting
帖子: 278
注册时间: 2009-02-26 1:30

Re: ./ 和. 的区别是什么,为什么./不好使啊

#9

帖子 fracting » 2012-03-17 17:28

fandy_meng 写了:谢谢大家!!!明白了!!!! :em11 :em11 :em11 :em11
1. 建议你把脚本贴出来, 虽然可能很短, 但是以后如果有新手看到, 也能学习到东西.
2. 你弄明白问题的过程, google到什么学习资料, 也可以贴到这里. 如果顺便写一个小结就更好了.

如果你这么做, 既是对帮助你的朋友的一个很好的反馈, 又能给以后的新手做一个好榜样 ;)
Wine的使用中的一些常见误区:
viewtopic.php?f=121&t=363147

分享Wine调试经验 -- 第二季: Wine Dr.com 中文乱码
viewtopic.php?f=121&t=385111

做一名开源社区的扫地僧(上)
viewtopic.php?f=80&t=389615
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: ./ 和. 的区别是什么,为什么./不好使啊

#10

帖子 自由建客 » 2012-03-17 18:31

谢谢大家!!!明白了!!!!
我不明白了,我很好奇!
回复