如何在shell提示符中包含返回代码和命令号?



我在使用Emacs时经常需要一个shell。最近,我一直在尝试从shell切换到eshell,这样我就可以在任何平台上使用相同的命令。

我想做的第一件事是自定义我的提示符以匹配我的bash提示符。为此,我正在定制eshell-prompt-function。我仍然缺少的唯一东西是当前的命令计数和最后的返回代码。我可以通过将PS1分别设置为例如!$?来在bash中做到这一点。我已经尝试了(eshell/echo "$?")用于后者,但它不起作用(尽管如果我在shell中手动执行命令它会起作用)。

编辑:


当前bash提示符的一个示例是[~][501:0],其中501是当前命令号(因此,如果我键入命令并点击Enter,它将显示502), 0是返回代码。

这将返回代码放入shell提示符:

(setq eshell-prompt-function
      (lambda ()
        (format "[%s][%s] "
                (abbreviate-file-name (eshell/pwd))
                eshell-last-command-status)))

我找不到任何简单的方法将最新的命令号放入提示符中——而且它可能用处不大,因为shell似乎使用一个环来记录命令历史,所以在某些时候计数器会卡在128,并且之前的所有提示符都是不准确的。

请注意,您还应该更新eshell-prompt-regexp以匹配eshell-prompt-function可以提出的任何内容。

相关内容

  • 没有找到相关文章