关于#!/bin/sh 和 #!/bin/bash 的差别
来源:互联网 发布:小学生 口语 打卡软件 编辑:程序博客网 时间:2024/06/11 21:30
昨天在看国嵌视频的时候学到shell脚本编程时候,看到#!/bin/sh和#!/bin/bash,虽然有用排除法来尝试过一些程序,观察执行结果,可是因为学嵌入式才几天所以还找不到规律。百度了一下看到了这样的博文,觉得比较合理。现在粘贴来,作为个人笔记的问题的答案。
在shell脚本的开头往往有一句话来定义使用哪种sh解释器来解释脚本。
目前研发送测的shell脚本中主要有以下两种方式:
(1) #!/bin/sh
(2) #!/bin/bash
在这里求教同福客栈的各位大侠们一个问题:
以上两种方式有什么区别?对于脚本的实际运行会产生什么不同的影响吗?
脚本test.sh内容:
#!/bin/sh
source pcy.sh #pcy.sh并不存在
echo hello
执行./test.sh,屏幕输出为:
./test.sh: line 2: pcy.sh: No such file or directory
由此可见,在#!/bin/sh的情况下,source不成功,不会运行source后面的代码。
修改test.sh脚本的第一行,变为#!/bin/bash,再次执行./test.sh,屏幕输出为:
./test.sh: line 2: pcy.sh: No such file or directory
hello
由此可见,在#!/bin/bash的情况下,虽然source不成功,但是还是运行了source后面的echo语句。
但是紧接着我又试着运行了一下sh ./test.sh,这次屏幕输出为:
./test.sh: line 2: pcy.sh: No such file or directory
表示虽然脚本中指定了#!/bin/bash,但是如果使用sh方式运行,如果source不成功,也不会运行source后面的代码。
为什么会有这样的区别呢?
junru同学作了解释
1. sh一般设成bash的软链
[work@zjm-testing-app46 cy]$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Nov 13 2006 /bin/sh ->bash
2. 在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式
3. 也就是说 /bin/sh 相当于 /bin/bash --posix
所以,sh跟bash的区别,实际上就是bash有没有开启posix模式的区别
so,可以预想的是,如果第一行写成 #!/bin/bash--posix,那么脚本执行效果跟#!/bin/sh是一样的(遵循posix的特定规范,有可能就包括这样的规范:“当某行代码出错时,不继续往下解释”)
- 关于#!/bin/sh 和 #!/bin/bash 的差别
- 关于#!/bin/sh 和 #!/bin/bash 的差别
- 关于#!/bin/bash和#!/bin/sh
- 关于#!/bin/bash和#!/bin/sh
- #!/bin/bash和#!/bin/sh的区别
- /bin/bash和/bin/sh的区别
- /bin/bash和/bin/sh的区别
- #!/bin/bash和#!/bin/sh
- bash、dash(/bin/bash和/bin/sh)的区别
- #!/bin/sh & #!/bin/bash
- #!/bin/bash #!/bin/sh
- #!/bin/sh 和$bash的区别
- 解释器/bin/sh和/bin/bash的区别
- Shell编程(/bin/sh和/bin/bash)
- #!/bin/sh与#!/bin/bash的区别
- /bin/sh 与 /bin/bash 的区别
- #!/bin/sh与#!/bin/bash的区别
- #! /bin/sh 与 #! /bin/bash 的区别
- Java源码-StringBuffer
- 各种语言版本的抛出异常Exceptions
- C# 大端与小端
- python出现Non-ASCII character '\xe7' in file ex6.py on line 1, but no encoding declare错误
- 中国官方严密封杀45大神秘事件震撼曝光
- 关于#!/bin/sh 和 #!/bin/bash 的差别
- 【软件使用】GitHub使用教程for Eclipse
- 设计模式-代理模式
- linux配置端口映射
- google protobuf学习笔记一:windows下环境配置
- Angularjs多步表单
- ICA 独立成分分析
- 各种语言版本实现欧拉猜想 Euler's sum of powers conjecture
- 【Andriod环境之AVD设置】