Bash或Bourne脚本?

six*_*ude 9 bash scripting sh

编写Bash脚本或Bourne脚本是更好的做法吗?我的团队写了Bourne脚本,但我不完全确定原因.

如果这是一个神圣的战争问题(即:vim与emacs),请回复:圣战.

Pau*_*lin 12

您可以更加确定Bourne shell将安装在任何给定的Unix计算机上.是的,Bash在Linux上无处不在,但整个世界都不是Linux.

  • "Bash在Linux上无处不在,但整个世界都不是Linux." 这是我之前的信念,然后我开始使用Solaris和HP-UX机器.我以为我可以用Bash为这些机器编写shell脚本,哦,我有多么错.但这是一个很好的学习经验,现在我总是使用bourne shell,只有我知道的语法符合POSIX. (2认同)

Ray*_*Ray 11

这取决于您的目标平台.

如果你只是针对主要的Linux发行版和Mac OS X,那么你可以确信这些系统可以使用bash.在其他UNIX(例如,AIX,Solaris,HP-UX)上,bash可能不一定存在,因此Bourne是更安全的选择.如果bash可用,我可以认为你没理由更喜欢Bourne.


el.*_*ado 10

最重要的是要记住并非每个OS softlinks/bin/sh都是/ bin/bash,就像一些Linux发行版那样.很多脚本都是为bash编写的,但是从以下开始:

#!/bin/sh
Run Code Online (Sandbox Code Playgroud)

所以他们在Ubuntu中破坏了.所以,当你编写bash脚本时,总是写:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

  • 我的一个牛人对Ubuntu很生气,因为他们使用的不是bash/bin/sh.我告诉他,他应该对那些将他们的bash脚本误标为sh脚本的白痴感到生气,但他不同意我的看法. (6认同)