关于sh和./的问题

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

关于sh和./的问题

#1

帖子 reaver » 2010-04-01 19:49

问题1:挂载的光盘后 查看install脚本 都有X权限,但用./执行后 却提示不被允许的权限- - 但是用sh却可以顺利执行,请大家指点一下为什么啊 :em06
问题2:bash sh ./ 在执行脚本的时候到底有什么区别呢 :em23
老虎不发猫,你当我是病危啊
我很菜但我很温柔
头像
nuanhuai
帖子: 7813
注册时间: 2009-03-10 13:04

Re: 关于sh和./的问题

#2

帖子 nuanhuai » 2010-04-01 20:25

sudo.........
kamui0523
帖子: 547
注册时间: 2008-05-14 18:53
来自: 上海

Re: 关于sh和./的问题

#3

帖子 kamui0523 » 2010-04-01 21:15

bash是shell命令,sh是一个软连接,在redhat下默认指向到bash,ubuntu下默认指向到dash,./是执行当前目录下的程序
头像
reaver
帖子: 212
注册时间: 2009-10-29 14:12

Re: 关于sh和./的问题

#4

帖子 reaver » 2010-04-02 9:06

nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
老虎不发猫,你当我是病危啊
我很菜但我很温柔
头像
懒蜗牛Gentoo
论坛版主
帖子: 7353
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 关于sh和./的问题

#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,这里也可以不写./,原因同上。
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
dshbusiness
帖子: 1831
注册时间: 2009-04-03 15:10

Re: 关于sh和./的问题

#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
来自: 上海

Re: 关于sh和./的问题

#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

Re: 关于sh和./的问题

#8

帖子 rediscover » 2010-04-02 9:16

reaver 写了:
nuanhuai 写了:sudo.........
- -我虽然菜鸟 但是还是喜欢root登录的- -
3楼说的我学习到了:)谢谢 但是还是有一点不解 为什么当前目录下执行 和用SH执行结果不一样呢 就是为什么./没权限 sh就有呢
菜鸟和root没有直接联系,但是如果不清楚自己是不是很有必要用root登录的话,就不要用root登录。
Here I am.
Ubuntu 桌面培训 - 全中文官方文档,含汉化截图,提供PDF
头像
reaver
帖子: 212
注册时间: 2009-10-29 14:12

Re: 关于sh和./的问题

#9

帖子 reaver » 2010-04-02 9:18

恩 这下又学习了 我想是不是这样 光盘被默认挂成了RO的形式 所以直接./就不行了 虽然X权限都有 而sh应该是提取了脚本的内容在当前shell下执行 不知道我理解对么 :em06
老虎不发猫,你当我是病危啊
我很菜但我很温柔
kamui0523
帖子: 547
注册时间: 2008-05-14 18:53
来自: 上海

Re: 关于sh和./的问题

#10

帖子 kamui0523 » 2010-04-02 9:57

和ro还是rw没关系,你最好能够把问题脚本贴出来看看
./和sh在权限的问题上是一模一样的
grubos
帖子: 2
注册时间: 2010-01-01 16:39

Re: 关于sh和./的问题

#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
来自: 廣州
联系:

Re: 关于sh和./的问题

#12

帖子 BigSnake.NET » 2010-04-02 18:59

reaver 写了:恩 这下又学习了 我想是不是这样 光盘被默认挂成了RO的形式 所以直接./就不行了 虽然X权限都有 而sh应该是提取了脚本的内容在当前shell下执行 不知道我理解对么 :em06
mount -l 看看
有 noexec 的话一样不行的
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
回复