系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
reaver
- 帖子: 212
- 注册时间: 2009-10-29 14:12
#1
帖子
由 reaver » 2010-04-01 19:49
问题1:挂载的光盘后 查看install脚本 都有X权限,但用./执行后 却提示不被允许的权限- - 但是用sh却可以顺利执行,请大家指点一下为什么啊
问题2:bash sh ./ 在执行脚本的时候到底有什么区别呢

老虎不发猫,你当我是病危啊
我很菜但我很温柔
-
kamui0523
- 帖子: 547
- 注册时间: 2008-05-14 18:53
- 来自: 上海
#3
帖子
由 kamui0523 » 2010-04-01 21:15
bash是shell命令,sh是一个软连接,在redhat下默认指向到bash,ubuntu下默认指向到dash,./是执行当前目录下的程序
-
reaver
- 帖子: 212
- 注册时间: 2009-10-29 14:12
#4
帖子
由 reaver » 2010-04-02 9:06
nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
老虎不发猫,你当我是病危啊
我很菜但我很温柔
-
懒蜗牛Gentoo
- 论坛版主
- 帖子: 7362
- 注册时间: 2007-03-02 17:36
- 系统: Linux Mint
#5
帖子
由 懒蜗牛Gentoo » 2010-04-02 9:10
./只是个路径,表示当前目录。
./xxxx.sh 用默认shell执行当前目录下的xxxx.sh脚本。(可以用echo $SHELL查看默认的shell是什么。一般是bash)
sh ./xxxx.sh 用sh来执行当前目录下的xxxx.sh脚本,sh是个链接,ubuntu下默认链接到dash,也就是说,这句就是用dash 来执行当前目录下的xxxx.sh脚本。这里可以不写./,因为dash会自己去当前目录下找这个脚本。
bash ./xxxx.sh 指明用bash来执行当前目录下的xxxx.sh,这里也可以不写./,原因同上。
-
dshbusiness
- 帖子: 1831
- 注册时间: 2009-04-03 15:10
#6
帖子
由 dshbusiness » 2010-04-02 9:13
reaver 写了:nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
在命令行下执行什么就是什么,严格区分。
$sh xxx.sh
表示你执行的是sh这个程序,这个程序有一个参数,就是xxx.sh这个脚本的文件名。
$./xxx.sh
表示你打算执行一个脚本,这个脚本叫做xxx.sh
前者表示你执行一个程序来解析这个脚本,后者表示你在直接执行这个脚本。
你用./xxx.sh没有执行权限是因为xxx.sh这个脚本没有被赋予执行权限。
chmod 700 xxx.sh
就可以了
-
kamui0523
- 帖子: 547
- 注册时间: 2008-05-14 18:53
- 来自: 上海
#7
帖子
由 kamui0523 » 2010-04-02 9:14
reaver 写了:nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
不知道你指的权限是什么,同一个用户下,使用./和sh的结果是一样的,但是./的方式需要该目录下的文件具有可执行权限,也就是chmo +x [filename]
sh或者bash则不需要,因为他们本身已经是一个具有可执行权限的程序,而且被当作解释器来解释你需要工作的脚本.
-
rediscover
- 帖子: 3173
- 注册时间: 2010-01-13 23:26
#8
帖子
由 rediscover » 2010-04-02 9:16
reaver 写了:nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
菜鸟和root没有直接联系,但是如果不清楚自己是不是很有必要用root登录的话,就不要用root登录。
-
reaver
- 帖子: 212
- 注册时间: 2009-10-29 14:12
#9
帖子
由 reaver » 2010-04-02 9:18
恩 这下又学习了 我想是不是这样 光盘被默认挂成了RO的形式 所以直接./就不行了 虽然X权限都有 而sh应该是提取了脚本的内容在当前shell下执行 不知道我理解对么

老虎不发猫,你当我是病危啊
我很菜但我很温柔
-
kamui0523
- 帖子: 547
- 注册时间: 2008-05-14 18:53
- 来自: 上海
#10
帖子
由 kamui0523 » 2010-04-02 9:57
和ro还是rw没关系,你最好能够把问题脚本贴出来看看
./和sh在权限的问题上是一模一样的
-
grubos
- 帖子: 2
- 注册时间: 2010-01-01 16:39
#11
帖子
由 grubos » 2010-04-02 11:18
dshbusiness 写了:reaver 写了:nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
在命令行下执行什么就是什么,严格区分。
$sh xxx.sh
表示你执行的是sh这个程序,这个程序有一个参数,就是xxx.sh这个脚本的文件名。
$./xxx.sh
表示你打算执行一个脚本,这个脚本叫做xxx.sh
前者表示你执行一个程序来解析这个脚本,后者表示你在直接执行这个脚本。
你用./xxx.sh没有执行权限是因为xxx.sh这个脚本没有被赋予执行权限。
chmod 700 xxx.sh
就可以了
解释的非常清楚,学习了!
-
BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
-
联系:
#12
帖子
由 BigSnake.NET » 2010-04-02 18:59
reaver 写了:恩 这下又学习了 我想是不是这样 光盘被默认挂成了RO的形式 所以直接./就不行了 虽然X权限都有 而sh应该是提取了脚本的内容在当前shell下执行 不知道我理解对么

mount -l 看看
有 noexec 的话一样不行的
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。