Shell、bash、sh和linux命令的关系

shell与linux

shell 是一个命令语言解释器(command-language interpreter)。是用户和Linux内核之间的接口程序。
在这里插入图片描述
拥有自己内建的 shell 命令集。我们在提示符下输入的每个命令【包含shell的内建命令和linux命令】都由shell先解释然后传给Linux内核。
shell也能被系统中其他有效的Linux 实用程序和应用程序所调用。
shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls rm,然后shell试着在搜索路径($PATH)里寻找这些应用程序。搜索路径是一个能找到可执行程序的目录列表。如果你键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。而如果命令被成功的找到的话,shell的内部命令或应用程序将被分解为系统调用并传给Linux内核。

sh和bash

sh【Bourne shell,其中Bourne是该软件的owner】、bash【Bourne Again shell,是sh的扩展,并对sh完全向后兼容】是具体的shell程序。想了解当前shell使用的是哪个程序可以在命令行中输入echo $SHELL。
在这里插入图片描述
想了解当前shell支持的内建命令集,可以在命令行中输入help了解:
在这里插入图片描述
可以通过help+命令名了解具体的命令功能,比如help source
在这里插入图片描述bash是linux中的一个应用程序,所以用man bash的方式了解更多bash的信息,比如bash中的变量。
在这里插入图片描述

sh示例

有些板卡环境使用的是sh
在这里插入图片描述
而对应的服务器使用的是bash
在这里插入图片描述

在host上编写的脚本在device侧就无法正常使用了:

for i in {1..5}
do
  echo "time $i"
done

这在host端可以正常运行:注意不是通过sh执行,而是通过./执行的。
在这里插入图片描述
在device侧运行就会报错:

line 1: syntax error: bad for loop variable

因为sh中只有字符串变量类型。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值