展开全部
在ubuntu中,sh只是bash的一个链接,执行的程序都是一样的,命令解释器是一样的。
但
bash xxx.sh和
./xxx.sh和
sh xxx.sh
还是有不同的,bash xxx.sh和sh xxx.sh都已经是直接执行命令,脚本程序作为这个命令的参数,不存在可行性权限的问题,而./xxx.sh则必须具有可执行权限,在部分自动化的脚本中出现像./xxx.sh这个的语句可能会出错。
然后,三条命令本身的语句不一样,部分脚本程序在执行时喜欢检测一下命令名本身([ "$0"]),对不同的命令会作出不同的反应,这个是取决与脚本本身的。
我没看过楼主的脚本,猜测,可能在xxx.sh这个脚本中有一条语句对命令名进行检测,然后进行条件跳转。
if [ "$0" = "sh xxx.sh" ]
then
......
fi
但
bash xxx.sh和
./xxx.sh和
sh xxx.sh
还是有不同的,bash xxx.sh和sh xxx.sh都已经是直接执行命令,脚本程序作为这个命令的参数,不存在可行性权限的问题,而./xxx.sh则必须具有可执行权限,在部分自动化的脚本中出现像./xxx.sh这个的语句可能会出错。
然后,三条命令本身的语句不一样,部分脚本程序在执行时喜欢检测一下命令名本身([ "$0"]),对不同的命令会作出不同的反应,这个是取决与脚本本身的。
我没看过楼主的脚本,猜测,可能在xxx.sh这个脚本中有一条语句对命令名进行检测,然后进行条件跳转。
if [ "$0" = "sh xxx.sh" ]
then
......
fi
展开全部
简单讲,sh全部符合POSIX标准,而bash则有很多自己的扩展,不完全符合POSIX标准。
非严格意义上说,sh可看作是bash的子集。
如果你的系统上是bash,你用 sh script.sh 执行脚本,实际上在工作的命令解释器还是bash(这种情况下sh被默认设置为bash的一个链接)。但bash内部有一套模拟sh行为的实现,所以能够以类似sh的方式(完全符合POSIX标准)来工作,假装自己是sh。
非严格意义上说,sh可看作是bash的子集。
如果你的系统上是bash,你用 sh script.sh 执行脚本,实际上在工作的命令解释器还是bash(这种情况下sh被默认设置为bash的一个链接)。但bash内部有一套模拟sh行为的实现,所以能够以类似sh的方式(完全符合POSIX标准)来工作,假装自己是sh。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sh是 bourne shell ,unix标准shell,它的的特点是 concise(简洁) compact(紧凑) fast(高效) 为AT&T编写 属于root的shell,不适合编程。
bash 是bourne again shell ,linux标准shell,他的特点是结合了 bsh,csh,ksh的很多优良特性。bash
bash 是bourne again shell ,linux标准shell,他的特点是结合了 bsh,csh,ksh的很多优良特性。bash
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
打开劳动法紧密赶快感看法浪费反对感看来反对感佛朗哥反对感劳动法规律地方乐观看法广泛看来感分厘卡感佛朗哥看法的规律棵地方个风格克当量老古董法;赶快浪费打开感地方乐观地方乐观浪费打开感地方立刻感大礼服感地方赶快豆腐干地方乐观开绿灯风格劳动法感劳动法哥罗仿的个风格发浪费扩大分厘卡广泛看来功能法翻跟斗飞机飞机帝国贝多芬 解放怪不得发表感解放的 飞机根本法发 咖啡碱大概贝多芬咯 反光镜部分的反抗基本反对看见 解放的地方艰苦看法 解放的感哦劳动赕佛感;藕粉感大家看法乐观地方;客观豆腐干乐观扩大反对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询