我看到正在使用两种类型的代码:
#!/usr/bin/sh
Run Code Online (Sandbox Code Playgroud)
和:
#!/user/bin/bash
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了这个,意见分歧很大。我在大多数网站上看到的解释都说sh比 旧bash,并且没有真正的区别。
有人知道这些之间的区别吗?你能给我一个实际的例子,什么时候使用一个而不是另一个?
Nif*_*fle 33
bash是shie的超集。你可以做的一切你都sh可以做bash。
Bash 具有更多功能(分支、内置函数、数组),使脚本更易于编写。一些后来的 *nix'es 有/bin/sh链接到/bin/bash
有关这里的教程的完整说明
传统上,/bin/sh 应该是原始的 Bourne shell,它没有历史记录或命令行编辑,也没有作业控制。
大约在过去 15 年左右的时间里,大多数 Unix 都安装了 POSIX shell,或者至少安装了 ksh 或 bash(它们非常接近 POSIX),但在 /bin/sh 中仍然有更有限的 shell
这样做的原因是期望旧sh命令的旧 shell 脚本仍然可以工作。
由于像{,}和!bash 这样的字符对 bash 具有特殊含义,因此使用这些字符(不转义它们)的旧 shell 脚本可能会失败。
(Bourne shell 会按!!{1,2}字面意思理解,而 bash 会将其解释为前一个命令 ( !!)的重复,后跟括号扩展)。
但在 Linux 上,该sh命令几乎总是指向 的链接bash,具有所有相同的功能。
| 归档时间: |
|
| 查看次数: |
17771 次 |
| 最近记录: |