linux系統 - linux電腦




一個更好的Linux shell? (6)

我使用bash,已經這樣做了十多年 - 但偶爾我想知道Linux shell世界是否有任何重大的新發展。

幾年前,微軟發布了PowerShell,這看起來非常有趣。 Linux shell中是否有類似的創新?


Bash(以及其他一些shell)最不受歡迎的功能之一是能夠編寫自己的可加載項,並讓shell將它們作為內置運行。

讓我們說你寫了可加載'打開'..你希望它像這樣工作:

on node 123 run some command
on class nodes run some command
on all nodes run some command

......等..

您可以按照關於如何編寫可加載的簡單示例,然後通過enable -f / path / to / loadable loadable_name將其作為內置的bash啟用

所以在我們的例子中,啟用-f / opt / bash / loadables / on

...在你的bashrc中,你已經知道了。

因此,如果您希望bash本地解釋您的spiffy新語言,您可以編寫一個名為'use'或'switch_to'的可加載項,然後修改解析器以在設置某個環境變量時加載不同的語法/運行時。

即:

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

然而,大多數人並不想破解他們的外殼。 我確實想要指出,存在設施可以採用Bash並按照你想要的方式進行,而不需要過多地使用核心代碼。

請參閱/ path-to-bash-source / examples / loadables,你可能能夠在你工作的地方飛行,因為你還在使用Bash。


IIRC,Powershell是面向對象的,而大多數unix shell和實用程序都在文本上運行。 在這方面, Squirrel Shell可能會讓您感興趣。 不過,我從來沒用過它。


如果您願意失去兼容性,可以考慮使用Python或Tcl等腳本語言作為shell。 如果解釋器不提供行編輯,命令歷史記錄,完成等,則rlwrap非常方便。

關於shell的一個哲學是它們應該主要用於將進程與文件連接起來( 這是一個支持該方法的頁面 )。 也就是說,人們已經使用它們編寫了一些非常複雜的軟件。


我來看看zsh或fishshell。


貝殼不比Scheme Schell更具創新性。 Scheme的所有功能與運行Unix命令嵌入式awk解釋器的能力相結合(當然,用Scheme編寫)。 唯一的缺點是它需要一點點patching才能在64位Linux上構建。

它不完全是Bourne-shell,但它有所不同。 當然,你必須學習Scheme - 獎金!


您可以通過Pash在Linux上運行PowerShell。 它以PowerShell使用.NET的方式使用Mono。





powershell