它的文化。伯恩的外壳已经有将近25年的历史了;它是最早的脚本语言之一,也是Unix管理员核心需求的第一个很好的解决方案。(例如,将所有其他实用程序捆绑在一起的“胶水”,可以执行典型的Unix任务,而不必每次都编译一个该死的C程序。)
By modern standards, its syntax is atrocious and its weird rules and punctuation-as-statement style (useful in the 1970s when every byte counted) make it hard for non-admins to penetrate it. But it did the job. The flaws and shortcomings were addressed by evolutionary improvements in its descendants (ksh, bash, zsh) without having to reconceive the ideas behind it. Admins stuck to the core syntax because, weird as it was, nothing else handled the simple stuff better without getting in the way.
For complex stuff, Perl came along and morphed into a sort of half-admin, half-application language. But the more complex something gets, the more it's seen as an application rather than admin work, so the business people tend to look for "programmers" rather than "admins" to do it, despite the fact that the right kind of geek tends to be both. So that's where the focus went, and the evolutionary improvements to the application capabilities of Perl resulted in...well, Python and Ruby. (That's an oversimplification, but Perl was one of several inspirations for both languages.)
结果呢?专业化。管理员们倾向于认为现代解释性语言对于他们每天的工作来说太重量级了。总的来说,他们是对的。他们不需要对象。他们不关心数据结构。他们需要命令。他们需要胶水。没有什么比Bourne shell概念更好地尝试执行命令了(除了Tcl,这里已经提到过);伯恩已经足够好了。
Programmers -- who nowadays are having to learn about devops more and more -- look at the limitations of the Bourne shell and wonder how the hell anyone could put up with it. But the tools they know, while they certainly lean towards the Unixish style of I/O and file operations, aren't better for the purpose. I've written things like backup scripts and file renaming one-offs in Ruby, because I know it better than I know bash, but any dedicated admin could do the same thing in bash -- probably in fewer lines and with less overhead, but either way, it'd work just as well.
人们经常会问“为什么每个人都用Y,而Z更好?”——但科技的进化,就像其他事物的进化一样,往往止步于足够好。“更好的”解决方案不会获胜,除非这种差异被视为一种破坏交易的挫败感。伯恩式脚本可能会让您感到沮丧,但对于一直使用它的人以及它所用于的工作来说,它总是能完成工作。