这个问题已经出现过好几次了,但史蒂文·G·哈姆斯(Steven G. Harms)是最新提出这个问题的。请注意,我并不是需要借口来写有关 BSD 的文章!
作为一名帅气的(或不帅气的)FreeBSD 用户,我大部分时间都从基础运行tcsh(1)
作为我的 shell。我更喜欢使用 C 风格的语法来进行点文件配置和脚本编写,即使它的使用“被广泛认为是有害的”。我只是发现阅读和写作更加自然,尽管我也说过 Perl,所以你可以随意理解。
我也坚信要做好默认设置。直到最近, tcsh(1)
仍然是 root 的默认 shell,这意味着如果您负责登录到某处的 FreeBSD 计算机,那么您肯定会使用它。也就是说,除非有人更改了 shell,希望从基础更改为其他内容,以免端口系统崩溃!问问我,年轻、鲁莽的鲁本是如何经历惨痛的教训才明白这一点的。
我很高兴我花时间学习tcsh(1)
中基本循环和其他结构的肌肉记忆,就像我 当年花时间学习 nvi一样。当你必须修复某些东西,并且被不熟悉的环境或一组你无法轻松使用的工具所阻碍时,这真是太糟糕了。这也是为什么我喜欢理性、合理的默认值,但那是另一次的帖子了。
今天,我根据上下文使用两种不同的 shell。我对服务器使用普通的sh(1)
并删除我不会定期与之交互的机器,因为它现在是默认设置。针对此编写的脚本也更容易移植,因此我可以在 NetBSD、illumos 或 Linux 上运行它们。如果我确实需要一些更复杂的东西,我仍然可以依靠tcsh(1)
(尽管我发现自己现在越来越少地接触它,这是苦乐参半)。
不过,为了在 FreeBSD、NetBSD 甚至 Penguins 上的台式机和笔记本电脑上进行常规交互使用,我使用Portable OpenBSD Korn Shell或oksh(1)
。这是 OpenBSD 上ksh(1)
的变体及其默认 shell。它速度快,文档齐全,实现了我实际使用的交互功能的子集,并且可以使用多年的ksh(1)
示例通过点文件轻松自定义。它是与 OpenBSD 的 OpenSSH、LibreSSL 和doas(1)
一起受益的另一个工具,尽管我不运行该操作系统。我希望在某个时候也将他们获得许可的 Game of Trees 和 openrsync(1)` 添加到该列表中。
我想没什么太异国情调的,但它对我来说非常有用:)。
作者: Ruben Schade ,悉尼,2025 年 1 月 12 日。